Продвинутые позиции условного модуля на Joomla - PullRequest
1 голос
/ 17 июля 2011

У меня есть коробка, которая содержит три позиции модуля внутри. Теперь цель, когда позиция модуля загружена одна, ее ширина должна составлять 100% от коробки; когда загружены два положения модулей, ширина каждого должна составлять 50%; и наконец, когда все три позиции загружены, каждая должна составлять 33%. Как я мог установить эти условия с наименьшим количеством кода? мой код теперь выглядит примерно так:

<?php if ($this->countModules( 'user1 or user2 or user3' )) : ?>
<div style="width:860px; margin:10px auto;">
<?php if ($this->countModules( 'user3' )) : ?>
   <div style="width:33%; float:left; min-height:100px;"><jdoc:include type="modules" name="user3" style="xhtml" /></div>
<?php endif; ?> 
<?php if ($this->countModules( 'user2' )) : ?>
   <div style="width:34%; float:left; min-height:100px;"><jdoc:include type="modules" name="user2" style="xhtml" /></div>
<?php endif; ?> 
<?php if ($this->countModules( 'user1' )) : ?>
   <div style="width:33%; float:left; min-height:100px;"><jdoc:include type="modules" name="user1" style="xhtml" /></div>
<?php endif; ?>
</div>
<?php endif; ?>

<ч /> подробнее объясню:

Я думаю, чтобы определить каждое специальное условие, но таким образом я не знаю, как сравнить «три» (или более) позиции друг с другом. то есть я знаю, когда я хочу отображать только одну из двух позиций (а не обе), я должен использовать это:

<?php if ($this->countModules( 'user1 xor user2' )) : ?>>

Но если я хочу сравнить одну позицию с двумя другими позициями одновременно ; Какой будет код? что-то похожее на это:?

<?php if ($this->countModules( 'user1 xor user2 or user3' )) : ?>

в приведенном выше коде я хочу показать просто user1 или только одну из позиций user2 или user3. Это правда?

Спасибо

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Это намного проще: на секунду забудьте о joomla-countModules-funkyness.Тогда вы можете довольно быстро получить количество модулей:

$nbColumns = (bool) $this->countModules( 'user1' ) + (bool) $this->countModules( 'user2' ) + (bool) $this->countModules( 'user3' );
$widthColumn = 100.0 / $nbColumns;

Преобразование coutModules-Return в логическое значение - это сокращение для $this->countModules( 'user1' ) ? 1 : 0.

0 голосов
/ 18 июля 2011

Кроме того, это должно быть возможно с простым HTML / CSS. Напомню, что если вы создаете таблицу с размером столбца «100%» и фиксированной шириной, браузер автоматически масштабирует ее в соответствии с количеством столбцов:

<table style="width:400px;">
 <tr>
   <td width="100%">
     cell 1
   </td>
   <td width="100%">
    cell2
   </td>
  </tr>
</table>

Я сомневаюсь, что это HTML-стандарт-совместимый, хотя ...

...