Поддержка токенов для своей сущности в 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
    Как купить билеты на поезд

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

    Ведущие корпоративов
    Хотя до наступления зимы осталось еще полтора месяца, многие коллективы уже сейчас планируют, как они будут встречать Новый год. Руководство рассматривает суммы, которые могли бы быть потрачены на корпоратив,

    Custom plugins and WordPress themes
    Шаблоны страниц в WordPress являются отличным способом изменить структуру страниц или добавить им функциональности. Создание собственного шаблона страниц может быть не простым делом, особенно для новичков,

    Продукт WooCommerce
    Каждый умный человек в современном мире прекрасно понимает, что в двадцать первом веке просто нельзя упускать возможность узнать или же научиться чему-либо новому. Особенно, если речь касается электронной

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

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

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

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

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

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

rss