У меня есть сайт на Joomla! 3.1, где я хочу, чтобы языки отображались как раскрывающееся меню, а не с элементом <select>
, но в <ul>
-s и <li>
-s как обычное раскрывающееся меню. Активный язык <li>
имеет класс 'lang-active'. В переопределении шаблона я добавил некоторый класс для неактивного <li>
также с именем класса 'lang-inactive'. Но мне не удается помещать все «lang-inactive» <li>
-s в вложенный тег <ul>
, чтобы иметь что-то вроде обычного раскрывающегося меню.Языки как выпадающее меню, Joomla! 3.1
Я хочу, чтобы структура, чтобы быть похожим на это:
<ul>
<li class="lang-active><a href="#"></a></li>
<ul class="submenu">
<li class="lang-inactive"><a href="#"></a></li>
<li class="lang-inactive"><a href="#"></a></li>
<li class="lang-inactive"><a href="#"></a></li>
</ul>
</ul>
Ниже приведен код шаблона переопределения.
Есть ли способ сделать это?
Спасибо!
<ul class="<?php echo $params->get('inline', 1) ? 'lang-inline' : 'lang-block';?>">
<?php foreach ($list as $language) : ?>
<?php if ($params->get('show_active', 0) || !$language->active):?>
<li class="<?php echo $language->active ? 'lang-active' : 'lang-inactive';?>" dir="<?php echo JLanguage::getInstance($language->lang_code)->isRTL() ? 'rtl' : 'ltr' ?>">
<a href="#"></a>
</li>
<?php endif;?>
<?php endforeach;?>
</ul>
Это полный код со ссылкой, которая дает мне неточные результаты, когда один язык активен. Иногда у меня есть английский и один испанский, и иногда есть три языка. Интересно, где проблема.
<ul class="<?php echo $params->get('inline', 1) ? 'lang-inline' : 'lang-block';?>">
<?php
$active = false;
foreach($list as $k => $language){
if ($language->active) {
$active = $language;
unset($list[$k]);
}
}
if ($params->get('show_active', 0) && $active !== false) : ?>
<li class="lang-active" dir="<?php echo JLanguage::getInstance($active->lang_code)->isRTL() ? 'rtl' : 'ltr' ?>">
<a href="<?php echo $language->link;?>">
<?php if ($params->get('image', 1)):?>
<?php echo JHtml::_('image', 'mod_languages/' . $language->image . '.png', $language->title_native, array('title' => $language->title_native), true);?>
<?php else : ?>
<?php echo $params->get('full_name', 1) ? $language->title_native : strtoupper($language->sef);?>
<?php endif; ?>
</a>
</li>
<?php endif;?>
<ul class="submenu">
<?php foreach ($list as $language) : ?>
<li class="lang-inactive" dir="<?php echo JLanguage::getInstance($language->lang_code)->isRTL() ? 'rtl' : 'ltr' ?>">
<a href="<?php echo $language->link;?>">
<?php if ($params->get('image', 1)):?>
<?php echo JHtml::_('image', 'mod_languages/' . $language->image . '.png', $language->title_native, array('title' => $language->title_native), true);?><span><?php echo $language->title_native;?></span>
<?php else : ?>
<?php echo $params->get('full_name', 1) ? $language->title_native : strtoupper($language->sef);?>
<?php endif; ?>
</a>
</li>
<?php endforeach;?>
</ul>
</ul>
Спасибо за ответ! Но здесь нужно сделать еще немного. Как только я добавляю ссылки, я иногда получаю два одинаковых языка, я считаю, что ссылка на активный язык должна быть написана не так, как неактивна? Теперь я отредактирую окончательный результат, если вы найдете какое-то решение для решения проблемы). Большое спасибо – gag
Активный язык хранится в '$ active', а не в' $ language', где хранится последний итерированный язык из последнего цикла 'for'. – MasterAM
Большое спасибо, я только что нашел решение самостоятельно. – gag