2012-05-17 23 views
6

Ich versuche Verwendung der Magento Kategorie Miniatur zu machen, aber es funktioniert nicht. Ich habe viele Online-Tutorials gefolgt (zB http://www.douglasradburn.co.uk/getting-category-thumbnail-images-with-magento/), und alle von ihnen Erwähnung der Funktion machen:Magento Kategorie Thumbnail

$_category->getThumbnail() 

, die angeblich in der Kategorie Modell. Ich benutze Magento 1.6 und kann diese Funktion nirgendwo finden. Ich habe auch heruntergeladen 1,5 und 1,7, sah es, und es ist nirgends zu finden. Wenn ich den Code ausführe, gibt es keine Fehler, aber nichts wird ausgegeben.

Hier ist mein vollständiger Code:

<ul id="nav"> 
<?php foreach ($this->getStoreCategories() as $_category): ?> 
    <?php echo $_category->getThumbnail(); ?> 
    <?php echo $this->drawItem($_category) ?> 
<?php endforeach ?> 
</ul> 

(Ich versuche, das Miniaturbild als Menüpunkt zu verwenden, wo es vorhanden ist)


hätte es funktioniert. Das Geheimnis ist, Sie müssen neu Abfrage für die vollständige Datenkategorie mit diesem Code:

Mage::getModel('catalog/category')->load($_category->getId())->getThumbnail() 

ich dieses Tutorial gefolgt etwas:

http://www.h-o.nl/blog/using_category_images_in_your_magento_navigation/

für Thumbnails in Ihrer Menükategorie mit.

dank T

+0

Haben Sie das Thumbnail im Backend korrekt eingestellt? Es wird keine Methode getThumbnail() geben, das ist eine magische Methode. Auch Postleitzahl. –

+0

Danke für die Klärung, ich dachte, da wäre sowas los! Ich habe dreifach überprüft, dass ich das Thumbnail gesetzt habe. Ich habe den Code zu meinem ursprünglichen Beitrag hinzugefügt. – Totomobile

+0

Testen Sie, dass foreach() iteriert. Mach auch einen 'Zend_Debug :: dump ($ _ category); exit;' und poste das Ergebnis. –

Antwort

11

Für das, was es wert ist, Ihre Lösung funktioniert, ist aber ziemlich ineffizient.

Verwendung:

Mage::getModel('catalog/category')->load($_category->getId())->getThumbnail() 

wird ein paar Hundertstel hinzufügen, vielleicht sogar Zehntelsekunden pro Kategorie auf Ihrer Seite Ladezeit.

Der Grund dafür ist, dass Sie sich die Mühe gemacht haben, eine Modellsammlung zu erhalten und das Element darin zu erhalten. Anschließend fügen Sie neue Datenbankaufrufe hinzu, die die vollständigen Daten für jede Kategorie abrufen. Sie müssen lediglich sicherstellen, dass Sie zuerst die vollständigen Daten der Kategorie erfassen.

Der Grund, was hatten Sie vorher nicht funktioniert, weil die Kategorie Sammlung nicht gesagt wurde, welche Attribute es auszuwählen braucht. Es war in der Tat nur flach Daten aus dem catalog_category_entity Tisch zurückkehrt, nicht mit Attributtabellen verbunden.

Was Sie tun müssen, ist wohl eher in diese Richtung:

<ul id="nav"> 
<?php foreach ($this->getStoreCategories()->addAttributeToSelect("*") as $_category): ?> 
    <?php echo $_category->getThumbnail(); ?> 
    <?php echo $this->drawItem($_category) ?> 
<?php endforeach ?> 
</ul> 

In der Tat, im Idealfall Sie die ->getStoreCategories() Funktion hinzufügen, um den Platzhalter-Filter außer Kraft setzen möchten.

Ich empfehle Öffnung app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php und lernen, welche Art von sehr kühlen Sammlung Funktionen geschrieben wurden. EAV Kollektionen Mastering ist wie ein Ritual des Übergangs für Magento-Entwickler. Sobald Sie dies tun, werden Sie nicht mehr aufzuhalten sein!

Hoffe, das hilft.

2

dies für mich gearbeitet:

<img src="http://etienneaigner.com/shop/media/catalog/category/ 
    <?php echo Mage::getModel('catalog/category')->load($_category->getId())->getThumbnail(); ?>" 

    height="338px" width="338px" 
    alt="<?php echo $this->htmlEscape($_category->getName()) ?>" /> 
4

Es besteht keine Notwendigkeit app/code/local/Mage/Katalog/Modell/category.php

Es ist leicht durch diese Linie getan werden kann, ändern code ... try this ... Seine Funktionen

$child= Mage::getSingleton('catalog/layer')->getCurrentCategory()->getId(); 

$imageSrc = Mage::getModel('catalog/category')->load($child)->getThumbnail(); 

$ThumbnailUrl = Mage::getBaseUrl('media').'catalog/category/'.$imageSrc; 

echo "<img src='{$ThumbnailUrl}' />"; 
1

Gerade diese Antwort kam. In späteren magento-Editionen 1.7+ ist es jedoch nicht notwendig, dem Code Overheads hinzuzufügen. Sie können der Category-Sammlung über config.xml weitere standardmäßige (und benutzerdefinierte) eav-Attribute hinzufügen. Wenn Sie den Mage/Katalog überprüfen/etc/config.xml Sie unter dem Knoten feststellen, dass es Knoten:

<category> 
     <collection> 
      <attributes> 
       <name/> 
       <url_key/> 
       <is_active/> 
      </attributes> 
     </collection> 
    </category> 

So können Sie ein Modul eigene erstellen und mehr eav Attribute hinzufügen:

<category> 
     <collection> 
      <attributes> 
       <thumbnail/> 
       <image/> 
      </attributes> 
     </collection> 
    </category> 

Und sie werden zu Ihrer Kategorie Sammlung hinzugefügt.

+0

Können Sie Ihre Antwort erweitern, ist der erste Knotensatz in der Datei config.xml nicht vorhanden. Ganz offensichtlich muss es hinzugefügt werden, aber wo und wie wird es einmal referenziert. Ich bin mir sicher, dass deine Antwort richtig ist und ich bin mir sicher, dass du weißt, wie du sie verwendest, aber ich selbst und andere nicht. Vielen Dank. – Stuart

+0

Dies ist die einzig richtige Antwort dafür. Sie sollten nicht eine ganze Kategorie laden, nur um das Vorschaubild zu erhalten ... –