Главная Новости

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

rss