0

XCart 4.4.2のインストールでは、いくつかの主要なカテゴリの製品があり、それぞれにいくつかのサブカテゴリが含まれています。ホームページで、各カテゴリ内のサブカテゴリを一覧表示したいのですが、このコード内からwelcome.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コードを手伝ってくれる人はいますか?ありがとう!

4

3 に答える 3

2

テンプレートで定義するよりも、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']) {

(+でマークされた行をコードに追加する必要があります)

skin / your-skin / customer / main / 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}
于 2011-08-23T17:44:09.027 に答える
1

古典的な答えは私にとってはうまくいきませんでした。これが私が使用したものです:

    // 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);
        }   
    }

これにより、各カテゴリが循環し、すべてのサブカテゴリが取得されます。

于 2011-10-11T16:00:59.903 に答える
0

これが古いスレッドであることは知っていますが、classicのコードは、(サブカテゴリをリンクするために)若干の変更を加えるだけでうまく機能しました。レベル3以上のサブカテゴリ(サブサブカテゴリ)も表示するにはどうすればよいですか?

間違った場所に投稿してしまったことをお詫びします。それを補うために、私は実際にクラシックのコードに追加しています。元のコードは、サブカテゴリをテキスト/画像としてリストしました。以下は、画像を削除するために使用したものですが、サブカテゴリをクリック可能なリンクにします

    <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>
于 2015-07-15T13:24:09.913 に答える