2012-05-09 2 views
14

Я использую многоуровневую навигацию Magento с моими пользовательскими атрибутами и ценой. Если я фильтрую по цене, он работает; но при фильтрации по моему пользовательским атрибутам показывает:Magento Layered Navigation «Вы не можете определить имя корреляции« mycustomattribute »более одного раза»

Вы не можете определить имя корреляции 'mycustomattribute' более чем один раз

следа:

#0 /home/coloresh/public_html/ColoreSG.com/lib/Varien/Db/Select.php(281): 
Zend_Db_Select->_join('inner join', Array, 'metal_idx.entit...', Array, NULL) 
#1 /home/coloresh/public_html/ColoreSG.com/lib/Zend/Db/Select.php(336):   Varien_Db_Select->_join('inner join', Array, 'metal_idx.entit...', Array, NULL) 
#2 /home/coloresh/public_html/ColoreSG.com/lib/Zend/Db/Select.php(315): Zend_Db_Select->joinInner(Array, 'metal_idx.entit...', Array, NULL) 
#3 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Catalog/Model/Resource/Layer/Filter/Attribute.php(70): Zend_Db_Select->join(Array, 'metal_idx.entit...', Array) 
#4 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Catalog/Model/Layer/Filter/Attribute.php(94): Mage_Catalog_Model_Resource_Layer_Filter_Attribute->applyFilterToCollection(Object(Mage_Catalog_Model_Layer_Filter_Attribute), '49') 
#5 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Catalog/Block/Layer/Filter/Abstract.php(91): Mage_Catalog_Model_Layer_Filter_Attribute->apply(Object(Mage_Core_Controller_Request_Http), Object(Mage_Catalog_Block_Layer_Filter_Attribute)) 
#6 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Catalog/Block/Layer/Filter/Abstract.php(73): Mage_Catalog_Block_Layer_Filter_Abstract->_initFilter() 
#7 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Catalog/Block/Layer/View.php(136): Mage_Catalog_Block_Layer_Filter_Abstract->init() 
#8 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Block/Abstract.php(238): Mage_Catalog_Block_Layer_View->_prepareLayout() 
#9 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Model/Layout.php(456): Mage_Core_Block_Abstract->setLayout(Object(Mage_Core_Model_Layout)) 
#10 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('catalog/layer_v...', 'catalog.leftnav') 
#11 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('catalog/layer_v...', 'catalog.leftnav') 
#12 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Model/Layout.php(205): Mage_Core_Model_Layout->_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element)) 
#13 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout->generateBlocks(Object(Mage_Core_Model_Layout_Element)) 
#14 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout->generateBlocks() 
#15 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Catalog/controllers/CategoryController.php(146): Mage_Core_Controller_Varien_Action->generateLayoutBlocks() 
#16 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Controller/Varien/Action.php(419): Mage_Catalog_CategoryController->viewAction() 
#17 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('view') 
#18 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) 
#19 /home/coloresh/public_html/ColoreSG.com/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch() 
#20 /home/coloresh/public_html/ColoreSG.com/app/Mage.php(683): Mage_Core_Model_App- >run(Array) 
#21 /home/coloresh/public_html/ColoreSG.com/index.php(87): Mage::run('', 'store') 
#22 {main} 
+0

Пожалуйста, Пересоздать его. – WojtekT

+0

как раз. Извините – Sam

ответ

27

Это потому, что модуль catalog/layer_view был вызван дважды. Вы можете искать 'type = "catalog/layer_view"' через ваши xml-файлы. Удалите блок, который вам не нужен. Или изменить тип к другому классу

+0

FYI: В моем случае у моего класса был пользовательский метод '_getCount()', который выполнял все те же логики фильтрации, что и 'apply()', чтобы я мог предоставлять значения в многоуровневом меню навигации. Это работает при применении любого другого фильтра (или никакого фильтра), но как только я применил свой собственный фильтр, логика была дублирована. Блоку не нужно было дублировать, чтобы справиться с этой проблемой. –

4

Я имел <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/> дважды. Удалено с одной строки и зафиксировано.

0

Для меня ответ Dubbo был прав, но более конкретно я узнал, что Magento Enterprise касается catalog_category_layered узла XML в файле enterprise_search.xml

+0

Я также использую предприятие и сталкиваюсь с аналогичной проблемой с моим пользовательским атрибутом продукта ** Цвета **. Вы можете сообщить подробности о шагах, которые вы предприняли для решения проблемы? Любая помощь будет принята с благодарностью. –

+0

Исправление можно найти здесь: http://aceph.tumblr.com/post/21851233473/magento-you-cannot-define-a-correlation-name –

0

Это вызывает те же проблемы. -Добавление тот же атрибут сортировки дважды при создании коллекции:

ПРИМЕЧАНИЕ: вызов setCollection ($ this-> getMyCollection); на шаблоне произошла моя ошибка: , потому что «цвет» уже был добавлен в порядок сортировки в качестве порядка сортировки по умолчанию.

РЕШЕНИЕ: быстрый способ исправить это, чтобы удалить порядок сортировки по умолчанию из запроса после получения значения:

$this->getRequest()->setParam('order',''); 

иначе расширить блок и переопределить setCollection() метод для ваших конкретных потребностей.

1

im my case Мне нужно добраться до блока, который имеет тип = "catalog/layer_view" из local.xml и catalog.xml и поместить мой измененный блок type = "catalog/layer_view". убедитесь, что есть только один блок, который содержит type = "catalog/layer_view".

0

Для любого из вас, кто ищет способ решить эту проблему в Magento Enterprise Edition, проверьте, имеет ли ваш шаблон catalog.xml или local.xml навигацию по поисковым запросам по каталогам. Если у вас есть это, переопределите search.xml в текущей теме из корпоративной темы и опустошите всю ссылку на блок.

0

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

<remove name="enterprisecatalog.leftnav" /> 
Смежные вопросы