2012-03-23 10 views
0
<reference name="left"> 
    <block type="catalog/navigation" 
      name="cms_catalog" 
      template="catalog/catalog.phtml"/> 
    <block type="catalog/product_new" 
      name="home.catalog.product.new" 
      alias="product_new" 
      template="catalog/product/newbar.phtml" /> 
    <block type="amreview/sidebar"  
      name="amreview_sidebar" 
      template="amreview/sidebar.phtml"/> 
    <block type="catalog/product" 
      template="catalog/product/specials.phtml" /> 
</reference> 

私は使用するログインを決定する条件を作りたいと思ってブロックを<block type="catalog/product" template="catalog/product/specials.phtml" />出力しないでください。どうしたらいいですか?XMLコードに条件を設定するにはどうすればよいですか?

答えて

0

代わりに「左」から行うことができます。それに渡されたパラメータを指定せずに、各ブロックをレンダリングします、

$this->getChildHtml(); 

ために:適切な.phtmlファイルでは、おそらく行を見つけます。あなたがしていることを置き換えることができ

$this->getChildHtml("cms_catalog"); 
$this->getChildHtml("home.catalog.product.new"); 
$this->getChildHtml("amreview_sidebar"); 
if ($condition) { // Find the approriate variable to define the condition. 
    $this->getChildHtml("specials"); 
} 
1

あなたはスペシャルを削除することができますがcustomer_logged_inレイアウトハンドル内からブロックします。

たとえば、あなたがそうのようなあなたのレイアウトファイルを変更することができます:あなたは特別に名前を追加する必要があります、あなたが投稿レイアウトコードで

<layout> 
    ... 
    <customer_logged_in> 
     <remove name="specials" /> 
    </customer_logged_in> 
</layout> 

ブロックし、削除ノードでそれを参照します(私はちょうど例として "スペシャル"を使用した)。

反対の効果を実装する場合は、customer_logged_outハンドルもあります。