0

使用先前讨论中的代码(链接:https ://magento.stackexchange.com/questions/12504/how-to-add-hreflang-tags-or-other-meta-tags-to-pages-in-magento ),我能够在我们的 Magento 站点中实现 hreflang 链接。

这是对我有用的代码:

    <?php foreach (Mage::app()->getWebsites() as $website) {
    foreach ($website->getGroups() as $group) {
        $stores = $group->getStores();
        foreach ($stores as $store) {
            $storeId = $store->getId();
            $storeCode = substr(Mage::getStoreConfig('general/locale/code', $storeId),0,2);
            if (Mage::registry('product')) {
                $productId  = Mage::registry('product')->getId();
                $base_url = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
                $url = Mage::getModel('catalog/product')->setStoreId($storeId)->load($productId)->getProductUrl();
                $url = preg_replace('/\?.*/', '', $url); 
                echo '<link rel="alternate" hreflang="' . $storeCode . '" href="' . $url . '"/>';}
            elseif(Mage::registry('current_category')) { 
                $categoryId = Mage::registry('current_category')->getId();
                $base_url = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
                $url = Mage::getModel('catalog/category')->setStoreId($storeId)->load($categoryId)->getUrlPath();
                echo '<link rel="alternate" hreflang="' . $storeCode . '" href="' . $base_url . $url . '"/>' . "\n";
                }}}} 
?>
<?php 
            $storeId = 1;
            if (Mage::registry('product')) {
                $productId  = Mage::registry('product')->getId();
                $base_url = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
                $url = Mage::getModel('catalog/product')->setStoreId($storeId)->load($productId)->getProductUrl();
                $url = preg_replace('/\?.*/', '', $url); 
                echo '<link rel="alternate" hreflang="x-default" href="' . $url . '"/>';
}
            elseif(Mage::registry('current_category')) { 
                $categoryId = Mage::registry('current_category')->getId();
                $base_url = Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
                $url = Mage::getModel('catalog/category')->setStoreId($storeId)->load($categoryId)->getUrlPath();
                echo '<link rel="alternate" hreflang="x-default" href="' . $base_url . $url . '"/>' . "\n";
            }
?> 

我遇到了分层导航 URL 和规范链接在类别页面上消失的问题。

有什么我可以添加到此代码中以确保分层导航 URL 包含“?” .html 后写如浏览器地址栏所示?

此外,在这些类型的类别页面上,规范链接不会显示。

该代码在产品页面上完美运行。

任何帮助将不胜感激!

提前致谢。

4

2 回答 2

0

我误解了这个问题。你能举个例子吗?该代码仅显示类别基本 URL。应用过滤器时,模块会更改 URL 添加过滤的参数,但您的代码没有这些参数。

通常人们不会放置过滤器,因为它会带来许多重复内容的问题。看看这个链接: https ://amasty.com/blog/magento-layered-navigation-best-settings-for-seo/

在我看来,我会使用其基本 URL 将规范 URL 留在类别中,并且不允许将任何分层的内容编入索引,因为这可能会产生重复的内容问题。

亲切的问候

于 2018-08-30T08:48:37.607 回答
0

为了解决这个问题,我需要知道:

  • 你把这段代码放在哪里了?是按类别执行的吗?
  • current_category 是空的吗?

问候。

于 2018-08-29T09:21:44.470 回答