0

私のMagento製品ページには、説明、機能、およびダウンロードと呼ばれる別のタブを表示するためのタブ付きシステムがあります。これは、特定のグループ内のログインした顧客に表示される必要があります。

catalog.xmlのレイアウトXMLには、次のものがあります。

<block type="catalog/product_view_description" name="product.description" as="description" template="catalog/product/view/description.phtml">
     <action method="addToParentGroup"><group>detailed_info</group></action>
     <action method="setTitle"><name>Description</name></action>
</block>

<block type="catalog/product_view_description" name="product.features" as="features" template="catalog/product/view/features.phtml">
    <action method="addToParentGroup"><group>detailed_info</group></action>
    <action method="setTitle"><name>Features</name></action>
</block>

<customer_logged_in>
    <block type="core/template" name="product.downloads" as="downloads" template="catalog/product/view/downloads.phtml">
        <action method="addToParentGroup"><group>detailed_info</group></action>
        <action method="setTitle"><name>Downloads</name></action>
    </block>           
</customer_logged_in> 

ただし、どのグループの顧客としてログインしていても、ボックスが表示されないため<customer_logged_in>、そこから削除するとタブ+ボックスが表示されます。

だから私は知る必要があります:

  1. Imがログインしたときにこれが表示されないのはなぜですか?
  2. ログインしているときにこのショーを作成できますか?ただし、特定の顧客グループでのみ表示できますか?

<customer_logged_in setCustomerGroupId="2">多分あなたが使うことができるか、似たようなものだと思いました!

ありがとう。

4

2 に答える 2

2

Customer LoginRedirectmagento拡張機能を使用できます。それはあなたの問題を解決します。

于 2012-07-25T11:22:36.770 に答える
1

.phtmlテンプレートファイルでソートしたので心配しないでください。他の人のために以下のコードを使用してください。

$_allowed_group_ids = array(1); // Stick in Allowed Customer Group ID's
$_product_collateral = array(); // We will store the tabbed content in our own array
$_restricted_tabs = array('downloads');

foreach ($this->getChildGroup('detailed_info', 'getChildHtml') as $alias => $html) {

    $_product_collateral[$alias] = $html;   

    if( in_array($alias, $_restricted_tabs) ):              

        if( Mage::getSingleton('customer/session')->isLoggedIn() ):

            $_group_id = Mage::getSingleton('customer/session')->getCustomerGroupId();

            if( !in_array($_group_id, $_allowed_group_ids) ):                           
                unset($_product_collateral[$alias]);
                continue;
            endif;
        else:
            unset($_product_collateral[$alias]);
            continue;                           
        endif;      

    endif;                                                                      
}

使用例:

<ul>
    <?php foreach( $_product_collateral as $alias => $html ): ?>
    <li><a href="#tab-<?php echo strtolower($alias); ?>"><?php echo ucfirst($alias); ?></a></li>
    <?php endforeach; ?>    
</ul>

ボックスコンテンツの使用例:

<?php foreach( $_product_collateral as $alias => $html ): ?>            
<div class="box-collateral <?php echo "box-{$alias}"?>" id="tab-<?php echo strtolower($alias); ?>">
    <?php echo $html; ?>
</div> 
<?php endforeach;?>
于 2012-07-25T13:20:14.787 に答える