Використовуючи Drupal 7, модулі можуть легко обробляти маркери, схожі на [node: author: name], де частина маркера після node: author посилається на маркер користувача. Відмінно від модуля Token для Drupal 6, код, який в Drupal 7 обробляє маркери, дозволяє створювати динамічні жетони. Це тому, що на Drupal 7 модулі, що реалізують маркери, можуть замінити будь-який маркер, а не лише лексеми, які вони визначили. Нормальний цикл, який використовується у mock_tokens (), є наступним.
foreach ($tokens as $name => $original) {
// Check the value of $name, and generate the replacement that is assigned to
// $replacements[$original].
}
Використовуючи наведений нижче код, ви можете отримати те, чого намагаєтесь досягти. Однак жетони мають певний формат, який відрізняється від описаного вами. Код не перевірений.
function mymodule_token_info() {
$type = array(
'name' => t('Anchors'),
'description' => t('Your description'),
);
return array(
'types' => array('anchor' => $type),
);
}
function mymodule_tokens($type, $tokens, array $data = array(), array $options = array()) {
$replacements = array();
$sanitize = !empty($options['sanitize']);
if ($type == 'anchor') {
foreach ($tokens as $name => $original) {
list($file, $title) = explode(':', $name);
if (!empty($title) && !empty($_GET[$title])) {
$title = $_GET[$title];
}
else {
$title = '';
}
$replacements[$original] = "<a href='$file.html'>$title</a>";
}
}
return $replacements;
}
Заміна жетонів настільки специфічна, що я не думаю, що ви знайдете модуль, який це робить. Ваша єдина можливість - це спеціальний модуль, який ви пишете.