1

最初のprestashopテンプレートをコーディングしているときに、この問題に直面しました。だから私がしたいのは、同じ親カテゴリの下にあるすべてのサブカテゴリのリストを取得することです。したがって、foreachループを実行して、親カテゴリIDを送信する必要があります。インターネットでは、prestasのコーディング、モジュールなどに関する情報はそれほど多くありませんが、2つの可能な解決策を見つけました。1つは: {$product->id_category_default} しかし、それは製品ページ内でのみ機能します(?)多分私は間違っていて、これで解決策を得ることが可能ですか?別の方法は少し必死に聞こえます:{$cookie->last_visited_category} これには問題があります。これは、親カテゴリから直接来た場合にのみ機能しますが、直接リンクまたはその他の方法でたどると失敗します。また、MySQLクエリを送信して親カテゴリIDを返すphp関数を作成することを考えていましたが、これは最適な方法ですか?また、私は自分のphp関数をsmartyで作成しようとはしていませんが、関数を呼び出すだけではない方法で動作しているようです。

結論として、個別のphp関数なしで親カテゴリIDを取得する方法と、それが非常に必要な場合は、smarty用に独自のphp関数を定義する場所と方法、およびそれらを呼び出す方法を知っている人はいますか?

私はprestashop1.4で作業しています。

ご清聴ありがとうございました。

4

1 に答える 1

3

このコードをモジュールで使用しました。適応させる必要があるかもしれませんが、基本的に、親カテゴリのIDはデータベースに保存されます。

$parentCategoryList = array(2, 3, 4, 5);
if(!in_array($id_category, $parentCategoryList)){
    $parentCategory = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
        SELECT DISTINCT c.id_parent
        FROM '._DB_PREFIX_.'category c
        WHERE c.id_category = '.(int)($id_category)
    );
    $id_category_parent = $parentCategory[0]['id_parent'];
}
else{
    $id_category_parent = $id_category;
}

私のコードで$parentCategoryListは、メインカテゴリのIDを格納します(値に変更します)。次に、表示しているカテゴリ($id_category)がメインカテゴリであるかどうかを確認します。そうでない場合は、データベースで親カテゴリを検索します。

配列を使用してメインカテゴリを手動で格納することにはあまり満足していませんが、機能します。

お役に立てれば!

于 2012-05-29T11:20:25.683 に答える