Добавить вывод модулей между материалами можно в файле шаблона вывода материалов.

Предварительно копируем файлы раскладок в папку html шаблона, чтобы они не затерлись при обновлении Joomla.

И в файл:

шаблон/html/com_content/featured/default.php

добавляем следующий код.

В начало файла, можно после

defined('_JEXEC') or die;

добавляем массив с настройками и код для получения html кода модулей:

/********************************************************************/
 
/* для настроек */
$position = 'reklama';
 
/* шаг количество колонки */
$posParams = array(
array(5, 3, 2),
array(5, 2, 1),
);
/* для настроек */
 
/* стиль для вывода колонками - скопировать в css файл шаблона */
/*
.mod-inner-table{
display:table;
width:100%;
}
.mod-inner-row{
display:table-row;
}
.mod-inner-cell{
display:table-cell;
}
*/
 
 
$iItem = 0;
$iPos = 0;
$iMod = 0;
$modOut = '';
$posOut = '';
$currentStep = 0;
 
 
/* загружаем модули */
$modules = JModuleHelper::getModules($position);
$document = JFactory::getDocument();
$renderer = $document->loadRenderer('module');
$modNums = count($modules);
 
$style = 'xhtml';
$styleParams = array('style' => $style);
 
/********************************************************************/

Настройки задаются в массиве

array(5, 3, 2),

5 - сколько материалов пропустить

3 - сколько выводить модулей

2 - количество колонок

Для каждой позиции модулей можно задать свои настройки, также добавить удалить сами позиции модулей.

Модулям в админке назначаем позицию reklama, название позиции тоже можно изменить в настройках:

$position = 'reklama';

Поскольку код вывода материалов состоит из трех циклов - главные материалы и остальные материалы и ссылки, то добавляем следующий код в конец двух циклов по материалам.

Копируем код который ниже перед:

<?php endforeach; ?>

вот этот код

<?php
/********************************************************************/
/* вывод модулей */
 
if($iItem == ($currentStep+$posParams[$iPos][0]-1)){
$posOut = &#39;&#39;;
$iRow = 1;
$iCol = 1;
$startRow = 0;
for ($startMod = $iMod; $iMod < $modNums && $iMod < $posParams[$iPos][1]+$startMod; $iMod++){
if ($iCol == 1) {
$posOut .= &#39;<div class="mod-inner-table pos-&#39; . $iPos . &#39;"><div class="mod-inner-row row-&#39; . $iRow . &#39;">&#39;;
$startRow = 1;
$iRow++;
}
ob_start();
echo $renderer->render($modules[$iMod], $styleParams);
$modOut = ob_get_clean();
$posOut .= &#39;<div class="mod-inner-cell col-&#39; . $iCol . &#39;">&#39;;
$posOut .= $modOut;
$posOut .= &#39;</div>&#39;;
 
if ($startRow && $iCol == $posParams[$iPos][2]) {
$posOut .= &#39;</div></div>&#39;;
$startRow = 0;
$iCol = 1;
}else{
$iCol++;
}
}
if ($startRow) $posOut .= &#39;</div></div>&#39;;
echo $posOut;
$iPos++;
$currentStep += $posParams[$iPos][0];
}
$iItem++;
/********************************************************************/
?>

Таким образом модули можно добавлять не только в раскладку блога:

category/blog.php

но и в вывод списком:

category/default.php

и в вывод материалов на главной:

featured/default.php

Вывод модулей среди материалов на главной мы здесь и рассмотрели.

Чтобы сделать комментарий, нужно авторизоваться на сайте!