2016-02-19 2 views
1

Разработчик Magento для начинающих здесь, но я постараюсь сохранить его структурированным.Magento multistore вид продукта категория url rewrite

архитектуры сайта:

  • Magento 1,8
  • Multi-магазин (1 магазин для 1 язык)
  • Слегка модом последним разработчиком (я думаю, что большинство, если не все основные файлы находятся в нетронутое, нетронутое состояние).
  • Dresscode Magento Шаблон
  • код магазина в URL -> истинный
  • SEO дружественных URL -> истинный

Проблема:

Когда под видом одного продукта (т.е. магазин.. com/en/shoes/guess-green-shoes.html), в коммутаторе хранилища в заголовке не создается правильный URL. IE. если бы я щелкнул по немецкому коммутатору, тогда адрес «store.com/de/shoes/guess-grone-schuhe.html», но это скорее «store.com/de/schuhe/guess-grone-schuhe». HTML».

неявно это означает, что категория slug не переводится, и я не знаю, как я должен действовать. Любые советы от более опытных игроков?

То, что я пробовал:

Checked управления URL переписывания, где ситуация выглядит следующим образом

Запрос пути целевой путь
correct_de_link X
correct_en_link X
correct_it_link X

correct_xx_link означает, что ссылка в порядке, с категорией an d название продукта переведено. Поэтому я считаю, что это правильно.

Я также понял, что я бы изменил основные классы Mage_Core_Controller_Request_Http-> setPathInfo(); или Mage_Core_Model_Store-> getCurrentUrl(); Но я думаю, что это бесполезно и замаскирует только пробку.

Что я буду делать, если я не получаю ответ:

Я разбирает категория строки с PHP взорваться() функцию, а затем перевести его между магазинами по имени и идентификатор магазина. Затем я вручную добавлю его в коммутатор хранилища.

ответ

0

Hei ребята

Так я копал глубже в проблему и выяснили, что это было вызвано функцией _rewriteDb в классе Mage_Core_Model_Url_Rewrite_Request.

А именно, переменная __from_store get была «en», «lv» .. для разных магазинов, а ядро ​​Magento пыталось использовать эту переменную для доступа к массиву магазинов, но вместо этого ему нужен идентификатор магазина, который подключен к хранилищу код. Поэтому я добавил строку (между «- REWRITE HACK»), чтобы исправить проблему, и теперь все работает так, как ожидалось.

$fromStore = $this->_request->getQuery('___from_store'); 
     if (!$this->_rewrite->getId() && $fromStore) { 
      $stores = $this->_app->getStores(); 
      // START - REWRITE HACK 
      $fromStore = Mage::app()->getStore($fromStore)->getId(); 
      // END - REWRITE HACK 

      if (!empty($stores[$fromStore])) { 
       /** @var $store Mage_Core_Model_Store */ 
       $store = $stores[$fromStore]; 
       $fromStoreId = $store->getId(); 
      } else { 
       return false; 
      } 
Смежные вопросы