Создание своего Token`а

Опубликовано 2014.08.01 в разделе Drupal

Расширить стандартный набор токенов очень просто. Это необходимо, если вам нужно как-то необычно формировать алиас материала. Для начала создайте модуль. Для начала в нём необходимо объявить hook_token_info. Он будет возвращать названия токенов, их описания и машинное имя токена.
  1. function my_module_token_info() {
  2. $info['tokens']['node']['my_new_token'] = array(
  3. 'name' => t('My node token'),
  4. 'description' => t('New custome node token'),
  5. );
  6. return $info;
  7. }
Я объявил новый токен, с машинным именем my_new_token. Он будет находиться в разделе ноды и ему будет доступен объект ноды. Далее воспользуйтесь хуком hook_tokens, для того чтобы токен с именем my_new_token превратился в алиас материала.
  1. function my_module_tokens($type, $tokens, array $data = array(), array $options = array()) {
  2. $replacements = array();
  3. if ($type == 'node') {
  4. $node = $data['node'];
  5. foreach ($tokens as $name => $original) {
  6. if ($name == 'my_new_token') {
  7. // Тут можно брать любые данные из объекта ноды.
  8. // Или вообще подгружать данные откуда угодно.
  9. $replacements[$original] = 'замена токена на алиас';
  10. }
  11. }
  12. }
  13. return $replacements;
  14. }
После этого в настройках автоматических адресов будет доступен ваш новый токен.

7 Комментариев

Оставить комментарий

  1. Гость 2015/06/23

    Здравствуйте!

    Имеется проблема. Указано, что описание поля поддерживает токены, отображается окно с их (токенов) списком, но вставленные в текст описания, токены отображаются как простой текст. Возможно дело в формате, применяемом к данному полю создания описания, но где его определить-изменить не нашел.

    Ответить

    1. Админ 2015/06/24

      Ну возможно фильтры так пропускают токены. А что это за поле? Textarea типа body?

      Ответить

      1. Гость 2015/06/24

        Поле textarea. Это поле в ССК в которое разработчик пишет инструкции для пользователя по работе с каким либо полем формы.
        Ну как у вас, при составлении комментария, под полем ввода е-майл строка "Если хотите подписаться на комментарии."
        Мне нужно дать пользователю в данном описании ссылку на ноду-инструкцию. Причем с использованием в ссылке CSS и токена выводящего базовый адрес сайта, так как сайт мультиязычный и при указании относительной ссылки получается месиво алиасов.

        Ответить

        1. Админ 2015/06/25

          А понял, дескрипшн поля. Может в нём не обрабатываются токены.
          Могу посоветовать поальтерить форму.
          И в альтере вручную заменить токен нужным словом.

          Ответить

          1. Гость 2015/06/25

            Похоже что иного выхода нет. Формат дескрипшена наверняка определяется в ядре. Странно только то, что токены не заменяются там где система предполагает их использование.
            Благодарю за совет.

            Ответить

  2. Гость 2014/08/15

    Preved-Medved

    Прошу прощения, что я Вас прерываю, есть предложение пойти по другому пути.

    Ответить

    1. Админ 2014/08/18

      По какому?

      Ответить

Ваш комментарий успешно создан

Ваш комментарий

  • Для выделения кода оберните его в тэги <code> и </code>
  • Отметьте аналитику