1

2つのコンテンツブロックを並べて表示できるように、新しいテンプレートを追加しようとしています。例:content_leftおよびcontent_right。問題は、新しいフィールドが空で、何も表示されないことです。目標は、ログインとアカウントの作成をそれぞれ独自のブロックに並べて行うことです。

新しいテンプレート2columns.phtml(一部トリミング)は次のとおりです。

<?php echo $this->getChildHtml('head') ?>
</head>
<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
<?php echo $this->getChildHtml('after_body_start') ?>
<div class="wrapper">
    <?php echo $this->getChildHtml('global_notices') ?>
    <div class="page">
        <?php echo $this->getChildHtml('header') ?>
        <div class="main-container col2-right-layout">
            <div class="main">
                <?php echo $this->getChildHtml('breadcrumbs') ?>
                <div class="col-main1">
                    <?php echo $this->getChildHtml('global_messages') ?>
                    <?php echo $this->getChildHtml('content_left') ?>
                </div>
                <div class="col-main2"><?php echo $this->getChildHtml('content_right') ?></div>
            </div>
        </div>
        <?php echo $this->getChildHtml('footer') ?>
        <?php echo $this->getChildHtml('before_body_end') ?>
    </div>
</div>
<?php echo $this->getAbsoluteFooter() ?>

これが私がそれを使おうとしているXMLです:

<customer_account_login translate="label">
        <label>Customer Account Login Form</label>
        <!-- Mage_Customer -->
        <remove name="right"/>
        <remove name="left"/>

        <reference name="root">
            <action method="setTemplate"><template>page/2columns.phtml</template></action>
       </reference>
        <reference name="content_left">
            <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">
                <block type="page/html_wrapper" name="customer.form.register.fields.before" as="form_fields_before" translate="label">
                    <label>Form Fields Before</label>
                </block>
            </block>
       </reference>
        <reference name="content_right">
            <block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml" />
        </reference>
    </customer_account_login>

content_leftとcontent_rightを除いてすべてが機能しているようです。残念ながら、これはすべての重要なことを示す必要があります。CSSを更新しようとしましたが、モジュールで定義しています。「content」だけでなく「content_left/right」を使用していて、他の何かがすでに使用されているという問題はありますか?助けてください、私はこのページに一日中いました。

4

2 に答える 2

1

あなたがしなければならないことがいくつかあります:

  1. content_leftブロックとcontent_rightブロックを参照する代わりに、それらを作成します。それらは実際にはレイアウトファイルのどこにも存在しないため、それらを参照しても機能しません。他のブロックを追加する前に、これを行う必要があります。
  2. 作成されたcontent_leftブロックとcontent_rightブロックが正しい場所に作成されていることを確認します。ブロックへの参照を変更するだけで、ルートブロックと同じレベルでそれらを作成することになります...ここに配置されている場合、それらはレンダリングされません。したがって、それらをルートブロックに追加する必要があります。

これは私が動作させることができたレイアウトでした:

<customer_account_login translate="label">
    <label>Customer Account Login Form</label>
    <!-- Mage_Customer -->
    <remove name="right"/>
    <remove name="left"/>

    <reference name="root">
        <action method="setTemplate"><template>page/2column-contact.phtml</template></action>

        <block type="core/text_list" name="content_left" as="content_left" translate="label">
            <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">
                <block type="page/html_wrapper" name="customer.form.register.fields.before" as="form_fields_before" translate="label">
                    <label>Form Fields Before</label>
                </block>
            </block>
        </block>

        <block type="core/text_list" name="content_right" as="content_right" translate="label">
            <block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml" />
        </block>
    </reference>
</customer_account_login>
于 2012-10-24T00:35:29.753 に答える
0

この問題が発生する理由は、「参照」ではなく「ブロック」を追加する必要があるためです。

ブロック

これは各テンプレートに添付されており、その仕事をするために必要な機能を提供します。

参照

これは、ブロック(または他のルール)を特定のページに添付する方法です(たとえば、製品ビューページに特別なブロックを追加する)。

この問題を修正するには、次の行を置き換えます。

<reference name="content_left">

と:

<block type="catalog/product" template="path/to/your/template.phtml">

一方、あなたの意図は、すべてを1つの列に入れることです-(つまり、「customer_form_register」と「customer.form.register.fields.before」を1つの列に出力し、「customer_form_login」を1つの列に出力します)別の列へ)

次に、次の手順を実行します。

1)追加した2'参照>を削除します。

2)phtmlファイルに(必要なセクションごとに)divを作成します。

3)それらのdiv内のブロック名(つまりcustomer_form_login)をエコーアウトし、必要なCSSルールを追加します。

于 2012-10-24T00:11:34.567 に答える