Не найдено

Drupal 7: изменяем статусные сообщения » Ишмурaдов Алeксaндр

Опубликовано: 16.10.2017

Drupal 7, после создания очередной ноды или комментария, выводит сообщение, что-то вроде «Forum topic %title has been created.» (пример для форумного топика). Вы, конечно же, хотите написать здесь что-то своё. А что, если текст зависит от того опубликована нода или отправлена на подтверждение администратору? Это как-раз мой случай, потому что я использую модуль Simple Regex Filter, чтобы отсеивать подозрительные сообщения на форумах.

Самое простое решение, позволяющее изменить все сообщения вида «@type %title has been created.», — установить модуль Strings Override, и вперёд. Для сложных случаев, когда нужна какая-то логика: устанавливается модуль Disable Messages, а затем используется экшн Rules «Set a message».

Однако в моем теме Disable Message ломает стили, да и не слишком гибкое это решение.

Поэтому вот ещё версия. Если комментарии на английском вам не понятны, пишите ниже, я постараюсь объяснить или помочь переделать код ваши нужды.

/** * We customize 'Forum topic ... has been created.' message when * it goes to the approval queue. This is done in two steps: * * 1. Add new status messages implementing hook_node_insert(). * This is done for both Published and Unpublished nodes. * For Published nodes we just duplicate the old message. * For Unpublished nodes we inform that the message is waiting for approval. * * 2. Remove old status message implementing hook_form_FORM_ID_alter(). * We override 'submit' action where we remove old messages in case it * matches the pattern '@type %title has been created.'. * We only remove a single match, so even if we duplicate a message * on the first step, one of them will still be displayed. * * We customize also the Drupal behavior when a Forum Topic was updated and * the new revision goes to the Approval Queue. Now it redirects a user to * the Forum Category and shows the similar status message to inform the user. * We use hook_node_update() for that. */ /** * Implements hook_node_insert() */ function MY_MODULE_node_insert($node) { /** * Add custom status messages when a node is inserted */ if ($node->type == 'forum') { if ($node->status == NODE_NOT_PUBLISHED) { drupal_set_message(t('Your forum topic has been queued for review by site administrators and will be published after approval.')); } elseif ($node->status == NODE_PUBLISHED) { $message = t('@type %title has been created.', array('@type' => node_type_get_name($node), '%title' => $node->title)); drupal_set_message($message, 'status', TRUE); } } } /** * Implements hook_node_update() */ function MY_MODULE_node_update($node) { /** * If a Forum Topic was updated and the new revision goes to the Approval Queue * we redirect a user to the Forum Category and show a message to keep him informed. */ if ($node->type == 'forum') { if ($node->status == NODE_NOT_PUBLISHED) { drupal_set_message(t('Your forum topic has been queued for review by site administrators and will be published after approval.')); drupal_goto('forum/' . $node->forum_tid); } } } /** * Implements hook_form_FORM_ID_alter(). * @see MY_MODULE_node_insert() */ function MY_MODULE_form_forum_node_form_alter(&$form, &$form_state, $form_id) { /** * Override 'submit' action for 'forum_node_form' form */ $form['actions']['submit']['#submit'][] = '_MY_MODULE_form_forum_node_form_submit'; } /** * @see MY_MODULE_form_forum_node_form_alter() */ function _MY_MODULE_form_forum_node_form_submit($form, &$form_state) { /** * Remove the old status message 'Forum topic ... has been created.' */ if (!empty($_SESSION['messages']['status'])) { $node = $form_state['node']; $old_message = t('@type %title has been created.', array('@type' => node_type_get_name($node), '%title' => $node->title)); $old_message_key = array_search($old_message, $_SESSION['messages']['status']); if ($old_message_key !== FALSE) { unset($_SESSION['messages']['status'][$old_message_key]); // Reset array indexes. Otherwise it doesn’t work with some theme templates. $_SESSION['messages']['status'] = array_values($_SESSION['messages']['status']); // Remove the empty status message wrapper if no other messages have been set. if (empty($_SESSION['messages']['status'])) { unset($_SESSION['messages']['status']); } } } }

Еще записи по теме

IRC (Internet Relay Chat)
    Антивирус Доктор Веб скачать бесплатно на 1 год без регистрации 2016
      Подробности Опубликовано 04.02.2016 01:09 Просмотров: 80630 Антивирус Доктор Веб 2016 - несомненно качественная и надёжная антивирусная программа отечественного производства. Включает в

    Comodo Free Antivirus для Mac | Лучшая Антивирусная защита для Mac
    Почему именно Comodo Antivirus для компьютеров Mac? Были времена, когда компьютеры Mac считались неуязвимыми. К сожалению, на сегодняшний день это не так. Количество вирусов под Mac

    AVZ - восстановление системных настроек и удаление вирусов
    Отличная программа для удаления вирусов и восстановления системы - AVZ (Антивирус Зайцева). Скачать AVZ вы можете нажав по оранжевой кнопке после генерации ссылок. Основные возможности AVZ - обнаружение

    Лучший антивирус для Windows 10
    Немецкая компания AV-Test регулярно проводит тесты антивирусных программ и на их основе дает рекомендации домашним пользователям. Не так давно лабораторией были опубликованы результаты тестов антивирусов

    NANO Антивирус Pro
      Обнаружение всех типов вредоносных программ Существует множество различных типов вредоносных программ. Они различаются способами распространения, особенностями их вредоносных действий, методиками

    Mobile-review.com Софт-парад от Билайн
    Тема материала — только что появившийся бесплатный антивирус от Билайн и его же полностью переработанное «фирменное» приложение «Мой Билайн». Удачно совпали по времени два события. Антивирус для нас с

    Нет доступа к сети - блокирует Брандмауэр или антивирус, Windows 7, Windows XP, Windows 8, Google Chrome, что делать
    Если интернет не работает, и нет возможности вызвать специалиста срочно, вы можете попытаться наладить настройки самостоятельно, воспользовавшись нашей статьёй. Совет: прежде чем искать методы решения

    Надо ли устанавливать антивирус на телевизор с смарт тв
            [Ответить] [Отменить ответ].Может ли телевизор со Смарт ТВ заменить телевизор с приставкой, кабельным и спутниковым ТВ? 5. Статьи о смарт тв (smart tv). Как установить флеш-плеер на телевизор

    9 способов проверить компьютер на вирусы онлайн
    Прежде чем переходить к тому как проверить компьютер на вирусы онлайн, рекомендую прочесть немного теории. Прежде всего, выполнить полностью онлайн проверку системы на вирусы нельзя. Можно проверить

    Dr.Web CureIt! скачать бесплатно
    Dr.Web CureIt! - программа для бесплатного лечения компьютера от вирусов. Dr.Web CureIt - лечащий антивирусный сканер, который создан на основе антивирусного ядра Dr.Web Scanning Engine.

rss