製品の新しいYes/No属性を作成しました。製品モデルを拡張してカスタムロジックを実行しましたが、カスタム関数はどこでも機能しています。
最初にカスタム属性値を取得しようとしたときに、いくつかの問題が発生しました。Magentoはそれをロードしていなかったので、$ product-> getMyAttributeName()の呼び出しは何もしませんでした。製品ビューでは、次の追加機能で動作するようになりました。
public function getAttrVal($attr_name)
{
return $this->getResource()->getAttribute($attr_name)->getFrontend()->getValue($this);
}
そのため、フロントエンドで製品を表示するときにうまく機能しました。設定されている場合は割り当てられた値をフェッチし、設定されていない場合はデフォルトをフェッチします。
カテゴリ(そのカテゴリ内のすべての製品のグリッド)を表示すると、まったく同じコードが実行されています。ただし、getAttrVal()関数は、製品にこの値を明示的に設定した場合でも、常にデフォルト値を返します。
私の人生では、属性が製品ビューに正しく読み込まれる理由を理解することはできませんが、同じ正確なコードを実行しているにもかかわらず、カテゴリビューは常にデフォルト値を取得します。何かご意見は?