countModules в модульной хромовой функции

Я использую схему сетки, и мне нужно рассчитать ширину столбца в зависимости от количества активных модулей в позиции. Я назначаю класс css в моем модульном хроме.

То, что я делал до сих пор, было примерно таким:

$position1ColumnWidth = functionThatCalculatesWidth('position1');
...
<jdoc:include type="modules" name="menu" style="customChrome" colWidth="<?php echo $position1ColumnWidth?>"/>

И чем в modules.php Я бы сделал что-то вроде этого:

function modChrome_customChrome ($module, &$params, &$attribs) {
    echo "<div class=\"" . $attribs["colWidth"] . ">";
    echo $module->content;
    echo "</div>";
}

Этот способ кажется мне грязным, потому что мне нужно рассчитать ширину столбца в моем индексе php и добавить лишний код, если я хочу добавить новую позицию.

Есть ли способ получить доступ к функции countModules для позиции, которая в настоящее время отображается из хром модуля, чтобы как можно больше отделить логику от шаблона?

2 голоса | спросил Reygoch 25 MaramWed, 25 Mar 2015 02:14:38 +03002015-03-25T02:14:38+03:0002 2015, 02:14:38

1 ответ


1

Функция chrome, подобная этой, может работать:

function modChrome_mymod($module, &$params, &$attribs)
{   
    jimport( 'joomla.application.module.helper' );
    $class = "";
    if(count(JModuleHelper::getModules('position'))) {
        $total_modules = count(JModuleHelper::getModules('position'));
        $width = round(100 / $total_modules);
        $class = " width-".$width;
    }
    if (!empty ($module->content)) : ?>
        <div class="gridmod<?php echo $class; ?> floatleft moduletable<?php echo htmlspecialchars($params->get('moduleclass_sfx')); ?>">
    // Rest of your chrome function goes here ...
}

Он подсчитывает общие модули данной позиции, затем делит 100 /количество модулей и присваивает их имени класса.

Затем вы можете создавать стили для этих ожидаемых имен классов, например:

.width-100 {width:100%;}  
.width-50 {width:50%;}  
.width-33 {width:33%;}  
.width-25 {width:25%;}  

и т. д.

ответил FFrewin 25 MarpmWed, 25 Mar 2015 21:43:29 +03002015-03-25T21:43:29+03:0009 2015, 21:43:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132