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

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

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

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

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

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

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

    Поступления в университет
    Перед всеми выпускниками школ и их родителями сейчас стоит задача – выбор предметов единого государственного экзамена (ЕГЭ). От того, какие ЕГЭ будут выбраны, зависит, поступит ребенок в ВУЗ или нет.

    Видеонаблюдение Novicam в Екатеринбурге
    По своей сути подключение видеорегистратора к локальной сети совершенно не отличается от подключения обычного компьютера к локальной сети.  Для того что бы система видеонаблюдения начала функционировать

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

    Комплект инсталляции Grohe 6в1
    Вместо обычного унитаза многие люди предпочитают, чтобы было сочетание инсталлированной конструкции унитаза с определенным видом отделки. Особенно такая инсталляция включают в себя раму, которая покрыта

rss