Вывод регионов внутри текста ноды

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

Аватар пользователя denperek denperek 27 октября 2016 в 14:47

Всем привет! Нашел в сети код для 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;
  
  
}?>

Комментарии

Аватар пользователя bumble bumble 27 октября 2016 в 15:29
1

Попробуйте так:

<?php
function 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);
  }
  
  
$body $vars['content']['body'][0]['#markup'];
  
$body explode ('</p>'$body);
  
$content '';
  
  
// Указываем номер абзаца, после которого будем выводить код
  
$regions = array(
    
=> block_get_blocks_by_region('region_after_2_paragraph'),
    
=> block_get_blocks_by_region('region_after_5_paragraph'),
    
=> 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