Поддержка токенов для своей сущности в Drupal

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

Сегодня мы поговорим о том, как сделать поддержку токенов для своей сущности. Как и в случае с предыдущим уроком, в котором я рассказывал как связать свою сущность с Views , у нас будет два способа решения данной задачи, один - с помощью модуля Entity API , второй - самописный код.

Способ 1

Данный способ очень прост, включаем модуль Entity tokens , который входит в комплект Entity API и поддержка токенов обеспечена.

Способ 2

Первым делом имплементируем хук hook_token_info() :

/** * Implements hook_token_info(). */ function product_token_info() { // Описываем новый тип токена. $type = array( 'name' => t('Products'), // Человеко-понятное название токена. 'description' => t('Tokens related to individual products.'), // Описание токена. 'needs-data' => 'product', // Тип данных. ); // Токены для продукта. $product = array(); // id продукта. $product['id'] = array( 'name' => t('Product ID'), 'description' => t('The unique ID of the product.'), ); // Название продукта. $product['title'] = array( 'name' => t('Title'), 'description' => t('The title of the product.'), ); // Ссылка на редактирвоание продукта. $product['edit-url'] = array( 'name' => t('Edit URL'), 'description' => t('The URL of the product\'s edit page.'), ); // Дата создания продукта. $product['created'] = array( 'name' => t('Date created'), 'description' => t("The date the product was posted."), 'type' => 'date', ); // Автор продукта. $product['author'] = array( 'name' => t('Author'), 'description' => t("The author of the product."), 'type' => 'user', ); return array( 'types' => array('product' => $type), 'tokens' => array('product' => $product), ); }

Далее имплементируем хук hook_tokens() с помощью которого наполняем токены данными :

/** * Implements hook_tokens(). */ function product_tokens($type, $tokens, array $data = array(), array $options = array()) { $url_options = array('absolute' => TRUE); $sanitize = !empty($options['sanitize']); $replacements = array(); if ($type == 'product' && !empty($data['product'])) { $product = $data['product']; foreach ($tokens as $name => $original) { switch ($name) { // id продукта. case 'id': $replacements[$original] = $product->id; break; // Название продукта. case 'title': $replacements[$original] = $sanitize ? check_plain($product->title) : $product->title; break; // Ссылка на редактирвоание продукта. case 'edit-url': $replacements[$original] = url('product/' . $product->id . '/edit', $url_options); break; // Автор продукта. case 'author': $name = ($product->uid == 0) ? variable_get('anonymous', t('Anonymous')) : $product->name; $replacements[$original] = $sanitize ? filter_xss($name) : $name; break; // Дата создания продукта. case 'created': $replacements[$original] = format_date($product->created, 'medium'); break; } } // Если найдены токены с префиксом 'author', то добавляем токены, которые хранят // расширенную информацию об авторе. if ($author_tokens = token_find_with_prefix($tokens, 'author')) { $author = user_load($product->uid); $replacements += token_generate('user', $author_tokens, array('user' => $author), $options); } // Если найдены токены с префиксом 'created', то добавляем токены, которые хранят // расширенную информацию об дате создания. if ($created_tokens = token_find_with_prefix($tokens, 'created')) { $replacements += token_generate('date', $created_tokens, array('date' => $product->created), $options); } } return $replacements; }

На этом создание токенов закончено. Чистим кеш и наслаждаемся результатом.

3D стерео фильмы для 5D
    Как купить билеты на поезд

    Я всегда в последнее время пользуюсь услугами настоящего интернет сайта. Он у меня внушает доверие. И здесь придбати квитки возможно в любое

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

    Заказ такси в Киеве от 30 грн
    Если неудачи в жизни для вас нормой, в первую очередь необходимо проанализировать, откуда растут корни ваших проблем. Скорее всего, вы человек неорганизованный и постоянно опаздываете. В мегаполисе это

    Тайверб Тайверб
    Прочие ингредиенты: целлюлоза микрокристаллическая, повидон К30, натрия крахмалгликолят, магния стеарат, opadry желтый YS-1-12524-A. Лапатиниб содержится в форме лапатиниба дитосилата моногидрата. № UA/8847/01/01

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

    Копаксон
    Конкурентно замещает антигены миелина в местах связывания с молекулами главного комплекса гистосовместимости класса II на поверхности клеток, несущих антигены. Следствием этого является активация образования

    Begin.com.ua/
    Подбором персонала занимается HR-менеджер, но часто такая должность отсутствует в компании, и его обязанности берут на себя или директор, или его заместитель. Если выбор сотрудников окажется неправильным 

    Бесплатная раскрутка сайтов ucoz
    Необходимо для себя выяснить, какая цель преследуется при раскрутке Интернет проекта. Здесь всё просто, так как чаще всего это возможность при помощи различных способов и средств увеличить поток посетителей.

    Шкафы купе
    Не смотря на то, что такой вид мебели как шкаф-купе появился относительно недавно, он уже успел завоевать сердца многочисленных поклонников. Несомненно, шкаф-купе очень вместительный и прекрасно вписывается

    Где купить качественные ссылки
    Большинство информации предлагаемой для изучения информации по продвижению ресурсов, непременно во главу угла ставят использование в интернет ресурсах качественного, уникального контента. Также для продвижения

rss