语言为下拉菜单,Joomla! 3.1

时间:2013-09-17 04:30:17

标签: php html drop-down-menu joomla

我有一个关于Joomla的网站! 3.1我希望语言显示为下拉菜单而不是<select>元素,而是<ul> - s和<li> - s作为普通下拉菜单。活动语言<li>有一个“lang-active”类。在模板覆盖中,我添加了一些非活动<li>类,类名为“lang-inactive”。但我无法将所有“lang-inactive”<li> - s放入嵌套的<ul>标记中,以获得类似普通下拉菜单的内容。

我希望结构如下:

<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>

1 个答案:

答案 0 :(得分: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>

这将创建一个列表活动项(如果列表配置为显示它)和一个包含其余非活动项的子列表。

当然,您需要将实际内容添加到列表中(链接,图像等)才能显示。