在XCart中,如何列出类别中的子类别



在我的XCart 4.4.2安装中,我有几个主要的产品类别,每个类别包含几个子类别。在主页上,我想列出每个类别内的子类别,但我有麻烦从欢迎访问子类别。代码中的TPL:

{foreach from=$categories_menu_list item=c name=categories}
  <a href="home.php?cat={$c.categoryid}" title="{$c.category|escape}">
    <li>
        <img src="{$c.image_path|amp}" alt="{$c.category|escape}"/>
        <strong>{$c.category}</strong><br/>
        <!-- list subcategories here-->
        {php}
          $parentid = $c.categoryid;
          $categoryNames = func_query_column("SELECT category FROM $sql_tbl[categories] WHERE parentid = " . $parentid);
          print_r($categoryNames);
        {/php}
    </li>
  </a>
{/foreach}

谁能帮助我与PHP/SMARTY代码需要生成子类别的列表?谢谢!

最好在php脚本中定义子类别数组,而不是在模板中定义。我可以为您的任务提供以下解决方案:

include/common.php补丁

@@ -90,6 +90,14 @@
         // Get categories menu data
         if (!empty($categories)) {
             $smarty->assign('categories_menu_list', $categories);
+
+            if (!isset($cat) || 0 == intval($cat)) {
+                $extended_categories = func_get_categories_list(0, true, true, 1);
+
+                if (!empty($extended_categories)) {
+                    $smarty->assign('extended_categories_list', $extended_categories);
+                }
+            }
         }
         if ($active_modules['Manufacturers']) {

(用+标记的行应添加到代码中)

皮肤/皮肤/客户/主/welcome.tpl

{foreach from=$categories_menu_list item=c}
<a href="home.php?cat={$c.categoryid}" title="{$c.category|escape}">
  <li>
  <img src="{$c.image_path|amp}" alt="{$c.category|escape}"/>
          <strong>{$c.category}</strong><br/>
    <!-- list subcategories here-->
    {foreach from=$extended_categories_list item=ec}
      {if $ec.parentid eq $c.categoryid}{$ec.category|escape}<br />{/if}
    {/foreach}
  </li>
</a>
{/foreach}

经典的回答不太适合我。下面是我使用的:

    // Get categories menu data
    if (!empty($categories)) {
        $smarty->assign('categories_menu_list', $categories);
        foreach($categories as $c){
            $ext_cats = func_get_categories_list($c['categoryid'], true, true, 1);
            if(!empty($ext_cats)){
                $extended_categories[$c['categoryid']] = $ext_cats;
            }
            $ext_cats = "";
        }
        if (!empty($extended_categories)) {
            $smarty->assign('extended_categories_list', $extended_categories);
        }   
    }

循环遍历每个类别并获得所有子类别。

我知道这是一个老线程,但是经典的代码对我来说工作得很好,有一些轻微的修改(使子类别链接)。我该怎么做才能让3级以上的子类别(子-子类别)也显示出来?

抱歉发错地方了。为了弥补这一点,我确实对classic的代码进行了添加。原始代码只是将子类别列为文本/图像,下面是我用来摆脱图片的方法,但使子类别成为可单击的链接

    <ul>
    {foreach from=$categories_menu_list item=c}
    <li><a href="home.php?cat={$c.categoryid}" title="{$c.category|escape}"><strong>{$c.category}</strong></a></li>
    <!-- list subcategories here-->
    {foreach from=$extended_categories_list item=ec}
    {if $ec.parentid eq $c.categoryid}<li><a href="home.php?cat={$ec.categoryid}" style="font-size:10px;">{$ec.category|escape}</a></li>{/if}
    {/foreach}
    {/foreach}
    </ul>

相关内容

  • 没有找到相关文章

最新更新