2013-12-06 2 views
0

У меня возникла проблема с частичным переопределением magento в EE. Когда индекеры настроены на сохранение (в system-> configuration -> (Advanced) Управление индексами) url_rewrites не обновляются.Magento EE 1.13.0.2 частичный reindex

Если я сохраняю продукт в бэкэнд, то загляните в таблицу enterprise_catalog_product_rewrite. Для этого продукта нет записи, и я думаю, из-за этого в enterprise_url_rewrite нет записи, что означает, что она не работает.

Я вижу продукт в листинге, но URL не является дружественным к SEO, и если ключ URL введен в браузере, он не отображает продукт.

Я искал информацию о том, как работает эта частичная индексация, но, похоже, нет ничего, кроме как лучше.

Я пробовал усекать URL-адреса, связанные с переписыванием, вручную (like this), но это просто испортило все, поэтому я вернул базу данных.

ответ

0

Новый UNIQUE-индекс Magento CE 1.8 изменяет URL-ключи в таблице перезаписи URL-адресов. Если у вас несколько видов хранилища и импортируются ваши продукты (так что для каждого хранилища отображается ключ URL-адреса), вы автоматически получаете дублированные ключи. Сценарий обновления достаточно умен, чтобы не бросить ошибку, но переименовать все ключи, так что вы будете в конечном итоге с чем-то вроде:

- http://de.example.com/someproduct.html 
- http://en.example.com/someproduct1.html 
- http://nl.example.com/someproduct2.html 

Чтобы избежать этого, URL переписывает должны быть исправлены перед обновлением, так что есть один переписывающий файл и URL-адрес, а в представлениях хранилища используется «Использовать по умолчанию». Вы можете справиться с этим одним SQL-запросом перед обновлением:

DELETE nondefault 
FROM catalog_product_entity_varchar AS nondefault 
INNER JOIN catalog_product_entity_varchar AS def ON def.value = nondefault.value 
AND def.entity_id = nondefault.entity_id 
WHERE def.attribute_id =86 
AND nondefault.attribute_id =86 
AND nondefault.store_id <>0 
AND def.store_id =0 

Обратите внимание, что 86 - это идентификатор атрибута ключа URL. Если вы уже обновили свою систему, не выполнив этот запрос сначала, вам сначала необходимо удалить неправильно созданные URL-ключи. Это можно сделать следующим запросом:

DELETE url_table 
FROM catalog_product_entity_url_key url_table 
INNER JOIN catalog_product_entity_varchar old_url_table ON url_table.store_id = old_url_table.store_id 
AND url_table.store_id <>0 
AND old_url_table.store_id <>0 
AND url_table.attribute_id = old_url_table.attribute_id 
AND url_table.entity_id = old_url_table.entity_id; 

Надеюсь, это поможет! Следующая ссылка может помочь вам, если у вас есть дополнительные вопросы: http://www.code4business.de/update-magento-enterprise-edition-1-13-0-2/

4

У меня была та же проблема, где catalog_product_entity_url_key будет содержать правильные данные для каждого магазина, и enterprise_url_rewrite будет содержать правильные request_path > target_path пары. Но совпадений не было, потому что enterprise_catalog_product_rewrite отсутствовала запись для данного продукта или имела запись, которая указывала на url_rewrite_id, которого больше не было в enterprise_url_rewrite.

Мое решение было восстановить enterprise_catalog_product_rewrite таблицу с этим запросом:

REPLACE INTO enterprise_catalog_product_rewrite 
(`product_id`, `store_id`, `url_rewrite_id`) 
(SELECT cpeuk.entity_id as product_id, cpeuk.store_id, eur.url_rewrite_id 
FROM catalog_product_entity_url_key cpeuk 
INNER JOIN enterprise_url_rewrite eur 
ON cpeuk.value = eur.identifier) 
Смежные вопросы