2012-05-09 11 views
14

Używam warstwowej nawigacji Magento z moimi niestandardowymi atrybutami i ceną. Jeśli filtruję według ceny, działa; ale gdy filtrowany przez mojego zwyczaju atrybuty to pokazuje:Nawigacja warstwowa Magento "Nie można zdefiniować nazwy korelacji" Mycustomattribute "więcej niż raz"

Nie można zdefiniować nazwę korelacji 'mycustomattribute' więcej niż raz

ślad:

#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

Proszę ją przeredagować. – WojtekT

+0

właśnie zrobiłeś. Przepraszam – Sam

Odpowiedz

27

Jest tak, ponieważ moduł catalog/layer_view został wywołany dwukrotnie. Możesz wyszukiwać "type =" katalog/layer_view "" przez pliki xml. Usuń blok, którego nie potrzebujesz. Lub zmienić typ do innej klasy

+0

FYI: W moim przypadku moja klasa miała niestandardową metodę '_getCount()', która wykonywała wszystkie te same logiki filtrowania co 'apply()', dzięki czemu mogłem podać wartości w warstwowym menu nawigacyjnym. Działa to podczas stosowania dowolnego innego filtru (lub bez filtra), ale zaraz po zastosowaniu filtru niestandardowego logika została zduplikowana. Blok nie musiał być duplikowany, aby uruchomić ten problem. –

4

miałem <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/> dwukrotnie. Usunięto jedną linię i poprawiono.

0

Dla mnie odpowiedź Dubbo był w porządku, ale bardziej konkretnie I okazało się, że Magento Enterprise dotyka catalog_category_layered węzeł xml w pliku enterprise_search.xml

+0

Używam również przedsiębiorstwa i mam podobny problem z atrybutem niestandardowego produktu ** Kolory **. Czy masz szansę podać szczegóły kroków podjętych w celu rozwiązania problemu? Każda pomoc będzie bardzo ceniona. –

+0

Poprawkę można znaleźć tutaj: http://aceph.tumblr.com/post/21851233473/magento-you-cannot-define--correlation-name –

0

To powoduje, że ten sam problem. -adding tego samego atrybutu do podobnego dwukrotnie podczas tworzenia kolekcji:

UWAGA: wywołanie setCollection ($ this-> getMyCollection); na szablonie spowodował mój błąd, , ponieważ "kolor" został już dodany do porządku sortowania jako domyślna kolejność sortowania.

ROZWIĄZANIE: szybki sposób, aby naprawić to, aby usunąć domyślny porządek sortowania z żądania po uzyskać wartość:

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

inaczej przedłużenia blok i zastąpić setCollection() metody dla konkretnych potrzeb.

1

W moim przypadku muszę przejechać blok, który whas type = "katalog/layer_view" z local.xml i catalog.xml i umieścić mój modified type = "katalog/layer_view" bloku. upewnij się, że istnieje tylko jeden blok zawierający typ = "katalog/widok warstwy".

0

Dla każdego, kto szuka sposobu na rozwiązanie tego problemu w Magento Enterprise Edition, sprawdź, czy twój template.xml lub local.xml ma katalogową nawigację warstwową. Jeśli masz go, zastąp plik search.xml w bieżącym motywie z motywu przedsiębiorstwa i opróżnij w nim wszystkie odwołania do bloku.

0

miał podobny problem na budowie Enterprise, więc księgowania dla nikogo, że potrzebuje go - okazało się, musiałem użyć następujących aby zmusić go do pracy:

<remove name="enterprisecatalog.leftnav" /> 
Powiązane problemy