Работа с token_replace() в D7

Главные вкладки

Аватар пользователя 7Rei 7Rei 16 сентября 2019 в 16:21

Добрый день! Для формирования контента на сайте использую модуль API Tokens. Встала задача вызывать часть контента в другой ноде средствами php. Т.к. контент выводится через токены, то и в другой ноде его хочется выводить и обрабатывать через токены. Для этого использую token_replace().

Описание функции:
https://api.drupal.org/api/drupal/includes%21token.inc/function/token_re...
Вид функции:
function token_replace($text, array $data = array(), array $options = array()) {}
Рабочий пример:
token_replace("[node:story-page-number]", array('node' => $node));

В моем случае API токен выглядит так:
[api:price["Название товара1", "1000 рублей.", "1 месяц"]/]
[api:price["Название товара2", "2000 рублей.", "1 месяц"]/]
[api:price["Название товара3", "3000 рублей.", "1 месяц"]/]

Простой вызов token_replace('[api:price["Название товара3", "3000 рублей.", "1 месяц"]/]'); не срабатывает.

Вопрос, как узнать, какие данные нужно передать этому токену, для его отображения?
Или по другому, "api:" - это что? какая-то сущность/модуль?

Лучший ответ

Аватар пользователя Mnilionic Mnilionic 17 сентября 2019 в 21:20
1

Родная функция модуля не работает?
api_tokens_render($text);
У них модуль на 5 функций, открыли б да посмотрели.

Комментарии

Аватар пользователя 7Rei 7Rei 19 сентября 2019 в 14:01

Работает! Спасибо!
Я еще не так силен в модулестроении друпала..

ПС. За это время наворотил свое решение, с подменой токенов средствами php, и вывод через token_replace(). Тоже вполне себе рабочее решение, особенно когда на странице вывода, тоже нужны изменения в отображении контента. Дополнительно использовал: http://xandeadx.ru/blog/drupal/897