如何在Magento 2中添加Rel Prev,Next标签

您所在的位置:网站首页 getlayer 如何在Magento 2中添加Rel Prev,Next标签

如何在Magento 2中添加Rel Prev,Next标签

#如何在Magento 2中添加Rel Prev,Next标签| 来源: 网络整理| 查看: 265

如何在Magento 2中添加Rel Prev,Next标签 2019年11月29日2019年11月21日 不二不三发表回复 阅读(12227)

在Magento 2中,有许多选项可以帮助您优化搜索引擎。但是,当涉及类别页面时,您只能添加规范的元标记,这可能会带来很多不便。因此,在这篇文章中,我将告诉您在Magento 2中添加rel="next"和rel="prev"标记以支持具有分页内容的机器人的方法。

如何在Magento 2中添加Rel Prev,Next标签 步骤1:配置模块以查看特定事件第2步:替换规范标签的默认设置步骤3:添加rel="prev"并rel="next" 步骤1:配置模块以查看特定事件

有多种方法可以帮助您添加Rel Prev,Next标签。但是,我强烈建议使用事件观察器方法。为了使用此方法,您需要做的第一步是配置模块以查看特定事件。为此,您需要在扩展名etc / frontend文件夹中创建一个events.xml文件。然后,您可以创建观察者类。

从上面的XML文件中,您可以看到正在观察的事件是layout_generate_blocks_after。由于上述事件不是类别页面所独有的,因此您需要检查是否已经在类别视图页面上。而且,由于完整的动作名称已包含在事件对象数据中,因此这并不是必需的。

if ('catalog_category_view' != $observer->getEvent()->getFullActionName()) { return $this; } 第2步:替换规范标签的默认设置

在默认实现中,尽管应用了页面或过滤器组合,规范标签始终指向根类别URL。

如果要删除默认的规范标签,则将需要类别模型实例。要检索它,可以使用注册表(current_category)。在下面的示例中,将使用布局对象,因为它是事件对象数据的一部分。

/** @var \Magento\Catalog\Block\Product\ListProduct $productListBlock */ $productListBlock = $observer->getEvent()->getLayout()->getBlock('category.products.list'); $category = $productListBlock->getLayer()->getCurrentCategory(); /** * Remove default canonical tag */ if ($this->categoryHelper->canUseCanonicalTag()) { $this->pageConfig->getAssetCollection()->remove($category->getUrl()); }

删除默认标签后,您现在可以添加自己的规范标签。要添加标签,您可以通过使用寻呼机块实例(\ Magento \ Theme \ Block \ Html \ Pager)生成规范URL,并使用页面配置(\ Magento \ Framework \ View \ Page \ Config)插入它。

/** @var \Magento\Catalog\Block\Product\ProductList\Toolbar $toolbarBlock */ $toolbarBlock = $productListBlock->getToolbarBlock(); /** @var \Magento\Theme\Block\Html\Pager $pagerBlock */ $pagerBlock = $toolbarBlock->getChildBlock('product_list_toolbar_pager'); $pagerBlock->setAvailableLimit($toolbarBlock->getAvailableLimit()) ->setCollection($productListBlock->getLayer()->getProductCollection()); /** * Add rel canonical with page variable */ $this->pageConfig->addRemotePageAsset( $this->getPageUrl([ $pagerBlock->getPageVarName() => $pagerBlock->getCurrentPage() ]), 'canonical', ['attributes' => ['rel' => 'canonical']] );

您可能会注意到,我刚刚显示的方法是getPageUrl,可以在\ Magento \ Theme \ Block \ Html \ Pager类中找到它。但是,我对它进行了一些自定义,使其更适合。

/** * Retrieve page URL by defined parameters * * @param array $params * @return string */ protected function getPageUrl($params = []) { $urlParams = []; $urlParams['_current'] = false; $urlParams['_escape'] = true; $urlParams['_use_rewrite'] = true; $urlParams['_query'] = $params; return $this->urlBuilder->getUrl('*/*/*', $urlParams); } 步骤3:添加rel="prev"并rel="next"

这是添加过程的最后一步。在此步骤中,您将添加rel="prev"和rel="next"指示分页的内容。添加这些内容时,搜索引擎机器人将按照您想要的顺序处理这些页面。然后,将合并他们的喜好属性,通常会将客户发送到首页。

/** * Add rel prev and rel next */ if (1 < $pagerBlock->getCurrentPage()) { $this->pageConfig->addRemotePageAsset( $this->getPageUrl([ $pagerBlock->getPageVarName() => $pagerBlock->getCollection()->getCurPage(-1) ]), 'link_rel', ['attributes' => ['rel' => 'prev']] ); } if ($pagerBlock->getCurrentPage() < $pagerBlock->getLastPageNum()) { $this->pageConfig->addRemotePageAsset( $this->getPageUrl([ $pagerBlock->getPageVarName() => $pagerBlock->getCollection()->getCurPage(+1) ]), 'link_rel', ['attributes' => ['rel' => 'next']] ); } 结论

完成上述所有步骤之后,您现在将拥有一个可运行的代码,可以帮助您向Magento 2 添加规范标签rel="prev"和rel="next"元标签。尽管这不是SEO的完整解决方案,但仍然可以很好地解决默认漏洞。功能

赏 赞(0) 分享 微信支付宝 微信二维码图片

用微信扫描二维码打赏

支付宝二维码图片

用支付宝扫描二维码打赏

版权属于: sbboke版权所有。

转载时必须以链接形式注明作者和原始出处及本声明。

张贴在magento、magento2教程、magento教程标签:Next、Rel Prev


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3