Доброго дня.
Пытаюсь создать свой токен.
<?php
function misc_hook_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
$replacements['skidka-code'] = create_guid(); //функция генерирует некий код - string
return $replacements;
}
function misc_hook_token_info() {
$type = array(
'name' => t('Коды'),
'description' => t('Коды на скидки'),
);
$global['skidka-code'] = array(
'name' => t('Код для скидки'),
'description' => t('Код для купона со скидкой!'),
);
return array(
'types' => array('global' => $type),
'tokens' => array('global' => $global),
);
}?>
Но в результате работы выдает Код на скидки: [global:Array]
Почему так, кто знает?
Комментарии
Очевидно, что ваш токен возвращает массив, а не строку.
Это мне было понятно изначально)
Но почему он возвращает массив?
У меня везде string используется, проверил сразу.
* Implements hook_token_info().
*/
function misc_hook_token_info() {
$info = array();
// определяем новый тип токенов(можно использовать и существующие)
$info['types']['my_custom_tokens'] = array(
'name' => t('My custom tokens'),
'description' => t('A token type for my custom tokens.'),
);
// добавляем в группу токен
$info['tokens']['my_custom_tokens']['skidka-code'] = array(
'name' => 'Код для скидки',
'description' => 'Код для купона со скидкой!',
);
return $info;
}
/**
* Implements hook_tokens().
*/
function misc_hook_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
if ($type == 'my_custom_tokens') {
// Перебираем в цикле все токены группы my_custom_tokens
foreach ($tokens as $name => $original) {
switch ($name) {
case 'skidka-code':
// определяем значение токена
$value = create_guid();
$replacements[$original] = $value;
break;
}
}
}
return $replacements;
}
если ты хотел добавить в global, то нужно было
$replacements['global:skidka-code'] = create_guid();
вот для global
* Implements hook_token_info().
*/
function misc_hook_token_info() {
$info = array();
// добавляем в группу global токен
$info['tokens']['global']['skidka-code'] = array(
'name' => 'Код для скидки',
'description' => 'Код для купона со скидкой!',
);
return $info;
}
/**
* Implements hook_tokens().
*/
function misc_hook_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
if ($type == 'global') {
// Перебираем в цикле все токены группы global
foreach ($tokens as $name => $original) {
switch ($name) {
case 'skidka-code':
// определяем значение токена
$value = create_guid();
$replacements[$original] = $value;
break;
}
}
}
return $replacements;
}
Огромное спасибо многоуважаемый. Ошибку свою нашел и исправил.