Twitter Bootstrap选项卡在Opencart上使用foreach

时间:2013-09-19 08:20:59

标签: php twitter-bootstrap opencart twitter-bootstrap-3

我希望使用twitter bootstrap 3.0对opencart(管理员视图)进行更改标签,代码如下:

catalog_form.tpl

 <ul id="myTab" class="nav nav-tabs">
   <li class="active"><a href="#tab-general" data-toggle="tab"><?php echo $tab_general; ?></a></li>
   <li class=""><a href="#tab-data" data-toggle="tab"><?php echo $tab_data; ?></a></li>
   <li class=""><a href="#tab-design" data-toggle="tab"><?php echo $tab_design; ?></a></li>
</ul>

<div id="myTabContent" class="tab-content">
  <div id="tab-general" class="tab-pane fade active in"> 

  <ul id="languages" class="nav nav-tabs">
    <?php $i = 0; ?>
      <?php foreach ($languages as $language) { ?>
         <li class="<?php if ($i == 0) { echo 'active'; } ?>"> 
            <a href="#language<?php echo $language['language_id']; ?>" data-toggle="tab"><img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></a>
        </li>
      <?php $i++; } ?>
  </ul>
  <div id="Mylanguages" class="tab-content">
    <?php $a = 0; ?>
    <?php foreach ($languages as $language) { ?>
      <div id="language<?php echo $language['language_id']; ?>" class="tab-pane fade <?php if ($a == 0) { echo 'active'; } ?> in">
      <?php echo $language['language_content']; ?>
      </div>
    <?php $a++; } ?> 
  </div>

  </div>
  <div id="tab-data" class="tab-pane fade">
   ...
  </div>
  <div id="tab-design" class="tab-pane fade">
   ...
  </div>
</div>

父标签(标签一般,标签数据,标签设计)没有预先完美的工作

首次重新加载,语言1 是有效标签

enter image description here

点击语言2的标签

  • link #language2标记包含selected class
  • 标识为div
  • language2标记具有显示块但没有active
  • 语言1 li仍然有active个班级,但语言2 li没有active班级。

enter image description here

当我尝试复制html(通过inspect元素)并在jsfiddle上修改(修改内容而不是html标签)时,它的工作完美。 Jsfiddle

2 个答案:

答案 0 :(得分:2)

解决了问题

只需删除opencart上的默认jquery选项卡

<script type="text/javascript"><!--
$('#tabs a').tabs(); 
$('#languages a').tabs();
//--></script> 

您将使用语言标签admin/view/template/xxx/xxxx_form.tpl

在模板文件中看到此脚本

答案 1 :(得分:0)

亲爱的朋友,我希望你不要因为在php中提到一些基础知识而感到不安,这个答案可能会被其他人看到,我已经看到了你的其他答案,我知道你是极客;)...

$ languages是一个数组,控制器可能会以相同的顺序将其发送到您的网页 并且顺序不会改变数组的var_dump($languages);是这样的:

    array(2) {
      ["en"]=&gt;
      array(9) {
        ["language_id"]=&gt;
        string(1) "3"
        ["name"]=&gt;
        string(7) "English"
        ["code"]=&gt;
        string(2) "en"
        ["locale"]=&gt;
        string(31) "en_US.UTF-8,en_US,en-gb,english"
        ["image"]=&gt;
        string(6) "en.png"
        ["directory"]=&gt;
        string(7) "english"
        ["filename"]=&gt;
        string(7) "english"
        ["sort_order"]=&gt;
        string(1) "0"
        ["status"]=&gt;
        string(1) "1"
      }
      ["fr"]=&gt;
      array(9) {
        ["language_id"]=&gt;
        string(1) "2"
        ["name"]=&gt;
        string(10) "..."
        ["code"]=&gt;
        string(2) "..."
        ["locale"]=&gt;
        string(31) "..."
        ["image"]=&gt;
        string(6) "..."
        ["directory"]=&gt;
        string(7) "...."
        ["filename"]=&gt;
        string(7) "..."
        ["sort_order"]=&gt;
        string(1) "1"
        ["status"]=&gt;
        string(1) "1"
      }

}

另一方面,当你点击标签时,页面不会刷新,不知道它不是AJAX,所以我们不应该改变我们的PHP代码。

  

我认为你的PHP代码已经改变了一点,   也许我在这里写的代码为你工作......

<?php foreach ($languages as $language) { ?>
    <li><a href="#language<?php echo $language['language_id']; ?>" data-toggle="tab"><i class="lang-<?php echo str_replace('.png','', $language['image']); ?>" title="<?php echo $language['name']; ?>"></i> <?php echo $language['name']; ?></a></li>
<?php } ?>
</ul>

希望最好的,亲爱的开放式... ;)