Всем привет! Нашел в сети код для template.php который выводит регион внутри текста ноды после определенного абзаца. Код работает без проблем, но мне необходимо выводить не один регион, а три после разных абзацев (например после 2-го, 5-го и 7-го). Как это сделать? Пожалуйста помогите разобраться. Вот код:
<?phpfunction mix_and_match_preprocess_node(&$vars) {
// Add a striping class.
$vars['classes_array'][] = 'node-' . $vars['zebra'];
// Merge first/last class (from mix_and_match_preprocess_page) into classes array of current node object.
$node = $vars['node'];
if (!empty($node->classes_array)) {
$vars['classes_array'] = array_merge($vars['classes_array'], $node->classes_array);
}
// Указываем номер абзаца, после которого будем выводить код
$paragraph = 4;
$body = $vars['content']['body'][0]['#markup'];
$body = explode ('</p>', $body);
$content = '';
$tmp_var2=block_get_blocks_by_region('txt_center_last');
$tmp_var=render($tmp_var2);
foreach ($body as $id => $value) {
if($id == $paragraph) {
// Добавляем нужный код
$content .= $region = $tmp_var;
}
$content .= $body[$id] . '</p>';
}
$vars['content']['body'][0]['#markup'] = $content;
}?>
Комментарии
Попробуйте так:
<?php
// Merge first/last class (from mix_and_match_preprocess_page) into classes array of current node object.
function mix_and_match_preprocess_node(&$vars) {
// Add a striping class.
$vars['classes_array'][] = 'node-' . $vars['zebra'];
$node = $vars['node'];
if (!empty($node->classes_array)) {
$vars['classes_array'] = array_merge($vars['classes_array'], $node->classes_array);
}
$body = $vars['content']['body'][0]['#markup'];
$body = explode ('</p>', $body);
$content = '';
// Указываем номер абзаца, после которого будем выводить код
$regions = array(
2 => block_get_blocks_by_region('region_after_2_paragraph'),
5 => block_get_blocks_by_region('region_after_5_paragraph'),
7 => block_get_blocks_by_region('region_after_7_paragraph'),
);
foreach ($body as $id => $value) {
if(array_key_exists($id, $regions)) {
$content .= render($regions[$id]);
}
$content .= $body[$id] . '</p>';
}
$vars['content']['body'][0]['#markup'] = $content;
}
?>
UPD
Спасибо за помощь! Работает!