Добавить вывод модулей между материалами можно в файле шаблона вывода материалов.
Предварительно копируем файлы раскладок в папку 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 = '';
$iRow = 1;
$iCol = 1;
$startRow = 0;
for ($startMod = $iMod; $iMod < $modNums && $iMod < $posParams[$iPos][1]+$startMod; $iMod++){
if ($iCol == 1) {
$posOut .= '<div class="mod-inner-table pos-' . $iPos . '"><div class="mod-inner-row row-' . $iRow . '">';
$startRow = 1;
$iRow++;
}
ob_start();
echo $renderer->render($modules[$iMod], $styleParams);
$modOut = ob_get_clean();
$posOut .= '<div class="mod-inner-cell col-' . $iCol . '">';
$posOut .= $modOut;
$posOut .= '</div>';
if ($startRow && $iCol == $posParams[$iPos][2]) {
$posOut .= '</div></div>';
$startRow = 0;
$iCol = 1;
}else{
$iCol++;
}
}
if ($startRow) $posOut .= '</div></div>';
echo $posOut;
$iPos++;
$currentStep += $posParams[$iPos][0];
}
$iItem++;
/********************************************************************/
?>
Таким образом модули можно добавлять не только в раскладку блога:
category/blog.php
но и в вывод списком:
category/default.php
и в вывод материалов на главной:
featured/default.php
Вывод модулей среди материалов на главной мы здесь и рассмотрели.