Реализация Magento Hreflang - PullRequest
       66

Реализация Magento Hreflang

0 голосов
/ 27 августа 2018

Использование кода из предыдущего обсуждения (ссылка: https://magento.stackexchange.com/questions/12504/how-to-add-hreflang-tags-or-other-meta-tags-to-pages-in-magento), Мне удалось внедрить ссылки hreflang на наш сайт Magento.

Вот код, который работал для меня:

    <?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 будет записан, как показано в адресной строке браузера?

Кроме того, на страницах категорий такого типа каноническая ссылка не отображается.

Код отлично работает на страницах товара.

Любая помощь будет принята с благодарностью!

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Я неправильно понял вопрос. Не могли бы вы показать пример? Код показывает только базовые URL категории. При применении фильтров модуль меняет URL, добавляя параметры фильтрации, но ваш код не имеет этих параметров.

Обычно люди не размещают фильтры, потому что это создает много проблем с дублированным контентом. Взгляните на эту ссылку: https://amasty.com/blog/magento-layered-navigation-best-settings-for-seo/

По моему мнению, я бы оставил канонические URL-адреса в категориях, использующих его базовый URL-адрес, и запретил бы индексировать что-либо многоуровневое, поскольку это может привести к дублированию контента.

С уважением

0 голосов
/ 29 августа 2018

Чтобы решить эту проблему, мне нужно знать:

  • Где вы положили этот код? Выполнен в категориях?
  • Является ли current_category пустым?

Привет.

...