Представления нескольких магазинов Magento с rel="альтернативный"


Я запускаю одну установку Magento 1.7 с 2 представлениями магазина. У меня есть два домена, которые оптимизированы для поисковых систем Ирландии и Великобритании. Поскольку контент очень похож, я хотел бы использовать rel="альтернативный" hreflang="XX":

<link rel="alternate" hreflang="en" href="http://domain.ie/" />
<link rel="alternate" hreflang="en-gb" href="http://domain.co.uk/" />

Есть ли простое решение/плагин, который позволит мне выбрать соотношение между этими двумя представлениями магазина для страницы продукта/категории/текста?

Author: ForMat, 2013-05-16

3 answers

В то время как теги привязки в Magento создаются по частям в шаблонах, нет центрального, простого способа сделать это. Извините. Единственный централизованный подход, о котором я могу думать, - это наблюдать за controller_front_send_response_before и выполнять сложный preg_replace(), чтобы переписать все теги привязки, но вам, вероятно, будет трудно поймать все ссылки.

Однако, по-видимому, лучшим подходом может быть использование карт сайтов, по крайней мере, в том, что касается Google: http://support.google.com/webmasters/bin/answer.py?hl=en&answer=2620865

Кредит на http://www.rimmkaufman.com/blog/advanced-international-seo-rel-alternate-hreflang-x/13122011/{[7] } для получения информации о карте сайта.

 0
Author: benmarks, 2013-05-16 14:40:06

Поскольку один веб-сайт хорошо работает в результатах поиска, а второй вообще не занимает места, вот что я понял:

  • На текстовых страницах вы можете использовать XML обновления макета (те же канонические URL-адреса sa)

<reference name="head"><action method="addLinkRel"><rel>canonical</rel><href>http://www.yoururl.com/goes/here</href></action> </reference>

  • Я буду использовать одни и те же URL-адреса продуктов на обеих страницах и 301 старых записях

  • Действия по умолчанию (например, регистрация/оформление заказа) имеют один и тот же uri запроса, поэтому нет необходимости его изменять

  • Если товар недоступен во втором магазине Я перенаправлю (301) запрос на домашнюю страницу

  • По умолчанию в заголовке отображается rel="альтернатива" с переключенным адресом домена

 0
Author: arekstasiewicz, 2013-05-17 08:51:46

Я создал это в прошлом. У меня больше нет кода, но вот идея и небольшой фрагмент кода, чтобы вы начали.

Вы можете наблюдать 'controller_action_layout_generate_blocks_ после'

    <frontend>
        <events>
            <controller_action_layout_generate_blocks_after>
                <observers>
                    <example_alternate>
                        <type>singleton</type>
                        <class>Example_Alternate_Model_Observer</class>
                        <method>createAlternateLinks</method>
                    </example_alternate>
                </observers>
            </controller_action_layout_generate_blocks_after>
        </events>
    </frontend>

Затем в вашем методе наблюдателя найдите соответствующую перезапись и добавьте ссылку на головной блок:

public function createAlternateLinks($observer) {

        $headBlock = Mage::app()->getLayout()->getBlock('head');
        $helper = Mage::helper('example');

        if ($headBlock) {
            foreach ($Mage::app()->getStores() as $store) {
               //this will be your logic for fetching the urls, I suggest using the current urls or registry ('current_product','current_category') to get the product, category 
               //and then using rewrites finding the relevant url for other store view
               $url = $helper->getAlternateUrl();

               //this will be used for hreflang but feel free to omit it or simply use store locale
               $area = Mage::helper('your_module')->getArea($store->getId()); 

               // add the alternate link
               $headBlock->addLinkRel('alternate"' . ' hreflang="' . $area, $url);
            }

        }


        return $this;
    }

Затем вы можете получить альтернативные URL-адреса, используя модель перезаписи URL-адресов. Например, для URL-адреса страницы продукта вы можете использовать этот

 public function rewrittenProductUrl($productId, $storeId) {
    $coreUrl = Mage::getModel('core/url_rewrite');
    $idPath = sprintf('product/%d', $productId);

    $coreUrl->setStoreId($storeId);
    $coreUrl->loadByIdPath($idPath);
    return $coreUrl->getRequestPath();
 }

Так что на самом деле все, что у вас есть осталось сделать все вместе и создать логику для getAlternateUrl, используя реестр и перезапись URL.

Дайте мне знать, если что-то неясно и нуждается в разъяснении.

 0
Author: mlagans, 2019-11-01 15:42:18