2012-05-09 5 views
14

Ich verwende die Layered-Navigation von Magento mit meinen benutzerdefinierten Attributen und dem Preis. Wenn ich nach Preis filtern, funktioniert es; aber wenn sie von meiner benutzerdefinierten Filterung Attribute es zeigt:Magento Layered Navigation "Sie können den Korrelationsnamen 'mycustomattribute' nicht mehr als einmal definieren"

Sie können keinen Korrelationsnamen definieren 'mycustomattribute' mehr als einmal

Spur:

#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

Bitte, es neu bearbeiten. – WojtekT

+0

hat gerade getan. Sorry – Sam

Antwort

27

Dies liegt daran, dass das catalog/layer_view-Modul zweimal aufgerufen wurde. Sie können 'type = "catalog/layer_view"' durch Ihre XML-Dateien suchen. Entfernen Sie den Block, den Sie nicht benötigen. Oder die Art in einer anderen Klasse wechselt

+0

FYI: In meinem Fall hatte meine Klasse eine benutzerdefinierte '_getCount()' Methode, die alle die gleiche Filterlogik wie 'apply()', so dass ich Wert Zählungen im Ebenen-Navigationsmenü bereitstellen konnte. Dies funktioniert, wenn Sie einen anderen Filter (oder keinen Filter) anwenden, aber sobald ich meinen benutzerdefinierten Filter angewendet habe, wurde die Logik dupliziert. Der Block musste nicht dupliziert werden, um auf dieses Problem zu stoßen. –

4

Ich hatte <block type="catalog/layer_view" name="catalog.leftnav" after="currency" template="catalog/layer/view.phtml"/> zweimal. Eine Zeile gelöscht und repariert.

0

Für mich Dubbo Antwort war richtig, aber genauer gesagt fand ich heraus, dass Magento Enterprise berührt den catalog_category_layered XML-Knoten in der enterprise_search.xml Datei

+0

Ich benutze auch Unternehmen und laufe auf ein ähnliches Problem mit meinem benutzerdefinierten Produktattribut ** Farben **. Gibt es eine Chance, dass Sie Einzelheiten zu den Schritten zur Behebung des Problems angeben können? Jede Hilfe würde sehr geschätzt werden. –

+0

Fix finden Sie hier: http://aceph.tumblr.com/post/21851233473/magento-you-cannot-define-a-correlation-name –

0

Dies bewirkt, dass das gleiche Problem. -Hinzufügen das gleiche Attribut auf die Art zweimal, wenn eine Sammlung Gebäude:

HINWEIS: Aufruf SetCollection ($ this-> getMyCollection); auf der Vorlage verursachte mein Fehler, , weil 'Farbe' bereits der Sortierreihenfolge als die Standardsortierreihenfolge hinzugefügt wurde.

LÖSUNG: ein schneller Weg, dies zu beheben, ist die Standardsortierreihenfolge aus der Anforderung zu entfernen, nachdem der Wert erhalten:

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

sonst die Sperren erweitern und die SetCollection() -Methode für Ihre speziellen Bedürfnisse außer Kraft setzen.

1

In meinem Fall muss ich den Block fahren, der typs = "catalog/layer_view" von local.xml und catalog.xml und setze meinen modifizierten type = "catalog/layer_view" -Block. Stellen Sie sicher, dass es nur einen Block gibt, der type = "catalog/layer_view" enthält.

0

Für alle, die nach einer Möglichkeit suchen, dieses Problem in der Magento Enterprise Edition zu lösen, überprüfen Sie, ob Ihre catalog.xml- oder local.xml-Vorlage über die Navigation in der katalogisierten Suche verfügt. Wenn Sie es haben, überschreiben Sie die search.xml in Ihrem aktuellen Thema vom Unternehmensthema und leeren Sie alle Blockreferenz darin.

0

hatte ein ähnliches Problem auf einem Enterprise zu bauen, so für jedermann veröffentlichen anderes, das sie braucht - stellte sich heraus, ich folgendes verwenden, um musste es an die Arbeit:

<remove name="enterprisecatalog.leftnav" /> 
Verwandte Themen