2016-04-26 8 views
2

私はマジェンタでカスタム関数を持っていますが、どのようにしてフロントエンドでpublic関数の値を見ることができますか?public function frontendの使い方Magento

機能:

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; 
} 

あなたが関数を呼び出すことによって、特定の値を表示したい場合は、あなたのMagentoで

+0

このコードは、モジュールのHelperクラスに含めることができます。 'Mage :: helper(" helpername ") - > getOptionsWithValues();' – paskl

+0

これをcore wishlist、/ app/code/core/Mage/Wishlist/Model/Item/Optionに追加します。 PHPと私はフロントエンドの属性値を表示したい – Robert

+1

コアファイルにハックコードをしないでください。モジュールを作成し、上記のコードを 'Data.php'(モジュールのヘルパークラス)に挿入し、最初のコメントで示したように、どこでもフロントエンドで呼び出せます。 – paskl

答えて

1

あなたは/app/code/core/Mage/Wishlist/Model/Item/Option.phpにこのコードを追加して言ったように。だから、あなたは別のファイルにこのコードを試してみてget_class($itemOption)をエコーする場合は、クラス名が表示されます

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

のようなファクトリメソッドを使用して、このクラスをインスタンス化することができます。これで、$itemOption -> getOptionsWithValues()のようなオブジェクトによって直接関数にアクセスできます。

しかし、ローカルフォルダ内の同じフォルダ構造をコピーしたり、上書きしたいモデルクラスを書き換えたりする代わりに、コアファイルを直接変更しないでください。

0

ありがとうございます。ブロック内でその関数を定義する必要があります。

  • .phtmlファイル:このテンプレートファイルから、任意のブロック関数を呼び出すことができます。

この機能がブロック内に定義されている場合。このコードを使用してphtmlファイルから呼び出します。

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

コールブロック機能

echo $blockObj->getOptionsWithValues(); 
+0

申し訳ありませんが、私は理解しません?ウィッシュリストのブロック名は何ですか? – Robert

+0

ブロック名はレイアウトで定義されています。例:

+0

私たちはデフォルトのMagento wishlistについてお話します。そのためにはブロック名を正確に教えてください。 – Robert

関連する問題