2013-09-17 2 views
1

У меня есть сайт на 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> 

ответ

0

Перед созданием списка вы можете найти активный язык.

<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="#"></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="#"></a> 
     </li> 
<?php endforeach;?> 
    </ul> 
</ul> 

Это позволит создать единый список активного элемента (если список настроен для его отображения) и суб-лист с остальной частью неактивных элементов.

Конечно, вам необходимо добавить фактическое содержимое в список (ссылки, изображения и т. Д.), Чтобы оно было видимым.

+0

Спасибо за ответ! Но здесь нужно сделать еще немного. Как только я добавляю ссылки, я иногда получаю два одинаковых языка, я считаю, что ссылка на активный язык должна быть написана не так, как неактивна? Теперь я отредактирую окончательный результат, если вы найдете какое-то решение для решения проблемы). Большое спасибо – gag

+0

Активный язык хранится в '$ active', а не в' $ language', где хранится последний итерированный язык из последнего цикла 'for'. – MasterAM

+0

Большое спасибо, я только что нашел решение самостоятельно. – gag

Смежные вопросы