5

特定の phtml ファイルで使用されているレイアウトを取得する方法はありますか?

ここでは、catalog/list.phtml でどのようなレイアウトが使用されているかを確認したいので、その情報を使用して、商品画像のグリッド サイズに関する条件 "if" を作成しました。

ググってみました。しかし、すべての結果は、xml レイアウトのことについて説明しているだけです。私が得た最も近い手がかりはこのスレッドです

Magento は指定されたページのレイアウトを取得します

このスニペットの使用を述べた

$left_block = $this->loadLayout()->getLayout()->getBlock('left');

しかし、phtmlファイルで試してみると、例外エラーが発生しました

アップデート

以下のジョーの答えは、例外がなくなり、さらに手がかりを与えてくれました。しかし、その振る舞いは私が必要としているものではありません。そのコードのスニペットは、指定されたブロックが XML で定義されているかどうかを確認するだけのようです。私が本当に必要としているのは、そのブロックが特定のページに存在するかどうかです。

私の場合、catalog/product/list.phtml で使用されているレイアウトを確認する必要があります。3 列の場合は、画像のサイズを小さくします。1列なら大きくします。

それを行う方法はありますか??

4

2 に答える 2

12

質問を正しく読んだら、次のことを試してください。

$this->getLayout()->getBlock('root')->getTemplate();
于 2012-06-25T02:21:52.177 に答える
3

削除loadLayout():

$left_block = $this->getLayout()->getBlock('left');

PHTML ファイルにアクセスするまでに、レイアウトは既に読み込まれています。

PHTML ファイルでは、$this はMage_Core_Block_Templateクラス (またはそれを拡張するクラス) を参照します。このクラスには loadLayout() メソッドが定義されていないため、例外が発生します。代わりに、loadLayout() は の一部ですMage_Core_Controller_Varien_Action

于 2012-06-23T16:21:22.107 に答える