2016-04-26 8 views
2

Ich habe eine benutzerdefinierte Funktion in Magento, wie kann ich im Frontend tun, um die öffentlichen Funktionen Werte zu sehen?Wie benutze ich öffentliche Funktion Frontend Magento

Funktion:

public function getOptionsWithValues() 
{ 
    $attributes = $item->getOptionByCode('attributes')->getValue(); 

    if (!$attributes) 
    { 
     return null; 
    } 

    $attributes = unserialize($attributes); 
    $options = array(); 

    foreach ($attributes as $attr_id => $attr_value) 
    { 
     $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', $attr_id); 

     $attr_options = $attribute->getSource()->getAllOptions(false); 

     foreach ($attr_options as $option) 
     { 
      if ($option['value'] == $attr_value) 
      { 
       $options[$attribute->getFrontendLabel()] = $option['label']; 
      } 
     } 
    } 

    return $options; 
} 

Danke

+0

Sie können diesen Code in der Helper-Klasse Ihres Moduls haben. Sie können es dann so nennen: 'Mage :: helper (" helpername ") -> getOptionsWithValues ​​();' – paskl

+0

Ich füge das in die Kernwunschliste,/app/code/core/Mage/Wunschliste/Model/Item/Option. php und ich möchte die Attribute Werte im Frontend – Robert

+1

anzeigen Nicht Code in Core-Dateien hacken. Erstellen Sie ein Modul, fügen Sie den obigen Code in die 'Data.php' ein (was Ihre Hilfsklasse für Ihr Modul ist) und rufen Sie es im Frontend auf, wo immer Sie möchten, wie ich es in meinem ersten Kommentar gezeigt habe. – paskl

Antwort

1

Wie Sie sagten, Sie diesen Code in /app/code/core/Mage/Wishlist/Model/Item/Option.php hinzugefügt. So können Sie diese Klasse instanziiert mit den Fabrikmethoden wie

$itemOption = Mage::getModel('wishlist/item_option'); 

Wenn Sie diesen Code in einer separaten Datei versuchen und Echo get_class($itemOption), sehen Sie den Namen der Klasse sehen. Jetzt können Sie die Funktion direkt über das Objekt wie $itemOption -> getOptionsWithValues() aufrufen.

Sie sollten jedoch niemals direkt Änderungen an den Kerndateien vornehmen, anstatt die gleiche Ordnerstruktur im lokalen Ordner zu kopieren oder die Modellklasse, die Sie überschreiben möchten, neu zu schreiben.

0

In Magento, wenn Sie eine Funktion durch den Aufruf bestimmter Werte angezeigt werden sollen. Sie müssen diese Funktion in Block

  • .phtml Datei definieren: Von dieser Vorlagendatei können Sie jede Blockfunktion aufrufen.

Wenn diese Funktion in einem Block definiert ist. Rufen Sie es aus der PHP-Datei mit diesem Code.

$blockObj = $this->getLayout()->getBlock('block_name'); 

Rufen Sie die Block-Funktion

echo $blockObj->getOptionsWithValues(); 
+0

Entschuldigung, aber ich verstehe nicht? Wie lautet der Blockname für die Wunschliste? – Robert

+0

Blockname ist im Layout definiert. Beispiel:

+0

wir sprechen über die voreingestellte Magento-Wunschliste, dazu bitte ich Sie, mir genau den Blocknamen mitzuteilen. – Robert