0

Prestashop には、すべてのサブカテゴリを含めて合計約 400 のカテゴリを含むブロックカテゴリ メニューがあり、これにより各ページにあまりにも多くのリンクが作成され、最適なオンページ SEO が得られません。

ルートと選択したカテゴリを除くすべてのリンクに rel="nofollow" といくつかの Javascript を追加したいと思います。それは子と兄弟です。

例: - サブカテゴリ A (ルート、dofollow) - サブカテゴリ A-1 (選択されたの兄弟、dofollow) - サブカテゴリ A-2 (選択された、dofollow) - サブカテゴリ A-2-a (選択された、dofollow の子) - サブカテゴリ A- 2-b (選択された dofollow の子) - サブカテゴリ A-2-c (選択された dofollow の子) - サブカテゴリ A-3 (選択された dofollow の兄弟) - サブカテゴリ B (ルート、dofollow) - サブカテゴリ B-1 ( Nofollow) - サブカテゴリ B-2 (Nofollow) - サブカテゴリ B-2-a (Nofollow) - サブカテゴリ B-2-b (Nofollow) - サブカテゴリ B-3 (Nofollow) - サブカテゴリ C (ルート、ドフォロー) - サブカテゴリ D (ルート、ドフォロー)

ルート、選択済み、および選択済みの子の選択に成功しました。ただし、選択した兄弟 (同じ親を共有するもの) の選択に失敗しました。

Blockcategories .tpl ファイル内で選択したカテゴリの兄弟を選択するにはどうすればよいですか?

4

3 に答える 3

0

私は非常によく似た問題を抱えていました-解決策が同じであるように、選択したカテゴリのすべての兄弟のスタイルを変更する必要がありました

category-tree-branch.tpl を変更する必要があります

<li {if isset($last) && $last == 'true'}class="last"{/if}>
    {assign var="RET" value=""}
    {if $node.children|@count > 0}
        {foreach from=$node.children item=child name=categoryTreeBranch}
            {if $smarty.foreach.categoryTreeBranch.last}
                {include file="$branche_tpl_path" node=$child last='true' assign='childItems'}
            {else}
                {include file="$branche_tpl_path" node=$child last='false' assign='childItems'}
            {/if}
            {assign var="RET" value="{$RET}{$childItems}"}
        {/foreach}
    {/if}
    <a href="{$node.link|escape:'htmlall':'UTF-8'}" {if $RET|strpos:'selected'} class="parentselect"{/if}{if isset($currentCategoryId) && $node.id == $currentCategoryId}class="selected"{/if}
        title="{$node.desc|strip_tags|trim|escape:'htmlall':'UTF-8'}">{$node.name|escape:'htmlall':'UTF-8'}</a>
    {if $RET}<ul>{$RET}</ul>{/if}
</li>

{if $RET|strpos:'selected'}必要なのは、アクティブなブランチの間に必要なものをすべて配置することです{\if}...または、選択されていないブランチの条件を変更します{if $RET|strpos:'selected'==false}

于 2014-03-10T00:19:54.660 に答える
0

PrestaShop は、ネストされたセット モデルを使用してそのカテゴリを格納しています。

This allows you to easily select a part of the tree (parents, children, siblings, etc.).

Each "Category" object has a nleft and nright member that will help you to perform these selections.

Another easier way is to use the level_depth member, all siblings will have an identical level_depth value.

You can modify the blockcategories.php file to add level_depth in the SELECT statement of hookLeftColumn(). Then in the category-tree-branch.tpl file, simple add a test:

{if $node.level_depth == ....}rel="nofollow"{/if}

Be careful, Google might not like the fact that one some pages a category is nofollow and dofollow on other pages.

于 2013-07-08T12:39:44.383 に答える
0

これは、blockcategories.php、blockcategories.tpl、および category-tree-branch.tpl を変更することで解決しました。

最初に blockcategories.php の 148 行目と 246 行目を編集しました。

行 148 は、モジュールが .tpl ファイルで $node と呼ばれる戻り配列を割り当てる getTree() です。ここで、次の行を配列に追加します (parent に id_parent 値を割り当てます。

'parent' => $resultIds[$id_category]['id_parent']

行 246 で、「currentCategoryParent」を smarty->assign 配列に追加します。

$this->smarty->assign(array('currentCategory' => $category, 'currentCategoryId' => $category->id, 'currentCategoryParent' => $category->id_parent));

$currentCategoryParent と $node.parent を使用して、.tpl ファイルからこれらの変数にアクセスできます。

于 2015-02-13T06:17:50.523 に答える