Привет!
Возникла проблема, может кто-то поможет разрешить.
Есть вот такой код
<?php
$text = "[block:views:test-test_bxslider] [block:user:online] [block:node:recent]";
$tokens = array('[block:views:test-test_bxslider]', '[block:user:online]', '[block:node:recent]');
$values = array('html-1', 'html-2', 'html-3');
foreach(
$tokens as $key => $token){
$text = str_replace($token, $values[$key], $text);
}
?>
'html-1', 'html-2', 'html-3' - подразумевается какая-то разметка.
В прикреплённом файле разметка для [block:views:test-test_bxslider]
Так вот, первая же замена заменяет просто всё содержимое $text.
Причем, это происходит не всегда. Если в качестве заменителя использовать простой текст (не html) то все в порядке, и даже с некоторым HTML всё работает. Но вот конкретно с тем, что я приложил (в прикреплённом файле) и некоторыми другими вариантами, содержимое заменятся просто всё целиком.
==========================================
Вообще задача стояла такая, нужно что бы в текстовом поле можно было использовать токены блоков.
Например нужно разместить на странице несколько блоков, в редакторе ноды пишем что-то вроде
Реализовал hook_token_info() и hook_tokens() в своём модуле, подключил Token Filter
Должно бы работать, но не работает.
Собственно код приведённый выше, это изменённый кусок из
<?php
function token_replace($text, array $data = array(), array $options = array()) {
$text_tokens = token_scan($text);
if (empty($text_tokens)) {
return $text;
}
$replacements = array();
foreach ($text_tokens as $type => $tokens) {
$replacements += token_generate($type, $tokens, $data, $options);
if (!empty($options['clear'])) {
$replacements += array_fill_keys($tokens, '');
}
}
// Optionally alter the list of replacement values.
if (!empty($options['callback']) && function_exists($options['callback'])) {
$function = $options['callback'];
$function($replacements, $data, $options);
}
$tokens = array_keys($replacements);
$values = array_values($replacements);
return
str_replace($tokens, $values, $text);
}
?>
Понятно, что вопрос не имеет прямого отношения к Drupal, но всё же может есть идеи...
Спасибо.
Вложение | Размер |
---|---|
![]() | 7.83 КБ |