Ich erhalte eine Produktsammlung einer bestimmten Kategorie auf einer Seite in einigen verschiedenen Magento-Sites. Mein Code zum Abrufen der Sammlung lautet:
$category = new Mage_Catalog_Model_Category();
$category->load($id);
$collection = $category->getProductCollection();
$collection->addAttributeToSelect('*');
$collection->addAttributeToFilter('status', 1);
$collection->addFieldToFilter(array(array('attribute'=>'visibility', 'neq'=>"1" )));
$collection->getSelect()->limit(12);
foreach ($collection as $shopProduct) :
echo $shopProduct->getProductUrl();
endforeach;
Mein Problem ist, dass auf einer der Magento-Sites, die wir ausführen, der ProductUrl()
Abruf eine URL wie http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/
und nicht mehr wie ist http://www.site.com/shopcat/product-url-key.html
. Aber auf allen anderen Seiten sieht es so aus, wie wir es wollen.
Weiß jemand, warum das sein könnte? Vielen Dank! Ich habe es auch versucht, getUrlPath()
aber das hat nichts zurückgegeben. Ich weiß, dass ich das umgehen kann, indem ich so etwas mache, <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>
aber diese Methode scheint ein bisschen ineffizient zu sein!
EDIT 21/03/14: Ich habe immer noch dieses Problem. Ich habe festgestellt, dass getProductUrl()
die gewünschte URL für einige Vorlagendateien der Site abgerufen wird, für andere jedoch nicht. Zum Beispiel lade ich eine Sammlung auf der Homepage und bekomme die gewünschten URLs. getProductUrl()
Gibt mir aber nicht die URLs, die ich mit dem gleichen Code in einer Kategorieansicht haben möchte.
Antworten:
Versuchen Sie, die Sammlung wie folgt zu erhalten:
Mit anderen Worten, lassen Sie das Modell wissen, dass es den URL-Schlüssel anstelle der langen hässlichen URL mit angibt
$collection->addUrlRewrite();
.quelle
Abrufen einer Produkt-URL
Potenziell verwirrend aufgrund der 3 Methoden, die Sie verwenden könnten, die sich alle in Mage_Catalog_Model_Product befinden:
Die beste Erklärung ist, einfach die Ergebnisse mehrerer Anrufe anzuzeigen. Bei einem Produkt mit dem URL-Schlüssel mondrian-large-coffee-table-set-multicolour auf der Domain http: //made.local sind die Ergebnisse:
quelle