我们在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 (非跟随)-子类别B-2 (非跟随)-子类别B-2-a (非跟随)-子类别B-2-b (非跟随)-子类别B-3 (非跟随)-子类别C(根,点跟随)-子类别D(根,点跟随)
我已经成功地选择了根、选定对象和选定对象的子项。然而,我没有成功地选择所选对象的兄弟姐妹(它们共享相同的父代)。
如何在块类别.tpl文件中选择所选类别的同级?
发布于 2015-02-13 14:17:51
我通过修改blockcategories.php、blockcategories.tpl和category-tree-branch.tpl解决了这个问题。
首先,在blockcategories.php中,我编辑了148和246行。
行148是getTree(),其中模块在.tpl文件中分配名为$node的返回数组。在这里,我将以下行添加到数组中(我将id_parent值分配给父对象:
'parent' => $resultIds[$id_category]['id_parent']在第246行,我将"currentCategoryParent“添加到smarty->赋值数组中。
$this->smarty->assign(array('currentCategory' => $category, 'currentCategoryId' => $category->id, 'currentCategoryParent' => $category->id_parent));然后,我可以使用$currentCategoryParent和$node.parent从.tpl文件访问这些变量。
发布于 2013-07-08 20:39:44
PrestaShop使用嵌套的set模型来存储其类别:
这使您可以轻松地选择树的一部分(父项、子项、兄弟项等)。
每个“类别”对象都有一个nleft和nright成员,它们将帮助您执行这些选择。
另一种更简单的方法是使用 level_depth 成员,所有同级都将具有相同的level_depth值。
您可以修改blockcategories.php文件以在hookLeftColumn()的SELECT语句中添加level_depth。然后在category-tree-branch.tpl ch.tpl文件中,简单地添加一个测试:
{if $node.level_depth == ....}rel="nofollow"{/if}要小心,谷歌可能不会喜欢这样的事实,即一个分类的页面是不关注的,而在其他页面上不关注。
发布于 2014-03-10 08:19:55
我也遇到过非常类似的问题--我需要更改选定类别的所有兄弟项的样式,以便解决方案是相同的
需要修改category-tree-branch.tpl ch.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>您只需将所需内容放在活动分支...or的{if $RET|strpos:'selected'}和{\if}之间,更改未选中分支{if $RET|strpos:'selected'==false}的条件
https://stackoverflow.com/questions/17514603
复制相似问题