0

私の通常のグーグルの努力が答えていない3つの質問があります。私は社内のフロントエンドWeb開発者であり、過去2週間にわたってMagentoを学ぼうとしています。Stack Overflowに投稿するのも初めてなので、個別の質問などとして投稿したほうがよいかどうか教えてください。

1.レイアウト-すべてのページが同じレイアウトを使用するようにする

したがって、私のページのほとんどは2列左のレイアウトを使用していますが、すべてではありません。local.xmlにいくつかのセットがあり、.phtmlページに直接ハードコーディングしたものもあります。次のコードを使用すると、すべてのページで同じレイアウトが使用されると思います。

<reference name="root">
    <action method="setTemplate"><template>page/2columns-left.phtml</template></action>
    <action method="setIsHandle">
        <applied>1</applied>
    </action>  
</reference>

/ cookies対応ページやレビューページなど、デフォルトのMagentoレイアウトでスタックしているサイトで作業しているときに、通常は表示されないページがたくさんあります。すべてのページのlocal.xmlにこのようなブロックを設定するのではなく、サイト全体で同じレイアウトが必要な場合に、すべてのページを統合するためのベストプラクティスは何ですか?

2.お問い合わせフォーム-送信ボタンをクリックしても機能しません

[CMS]> [ページ]でお問い合わせページを編集していますが、フォームアクションが指しているファイルが見つからない可能性があります。フォームは表示されますが、送信されません。
お問い合わせCMSページにあるものは次のとおりです。

{{block type='core/template' name='contactForm' form_action="/contacts/index/post/"     template='contacts/form.phtml'}}

送信ボタンをクリックした後に発生するエラーは次のとおりです。

Not Found

The requested URL /contacts/index/post/ was not found on this server.

構成設定を確認しましたが、それは正しいと思いますが、他に何かしなければならないことがあるかもしれません。

3.製品レビュー-表示する「全体」評価の取得

ログインしてレビューを追加した後、form.phtmlを利用するレビューdivが製品ページに表示されますが、評価が表示されません。評価を表示するかどうかを制御するifステートメントの条件を満たしていないようです。以下は、それが捕らえられているというifステートメントです。

<?php if( $this->getRatings() && $this->getRatings()->getSize()): ?>

これらの条件を満たす方法がわかりません。

4.ブロックの再配置-local.xmlを使用して、ブロックの移動先を再配置します

悪い習慣を身につける前に、最初からベストプラクティスを使用していることを確認したいと思います。私は通常、テンプレートファイルにアクセスして、phtmlで表示されていた場所に手動で移動しましたが、XMLでこれらの変更を行うのが最善だと聞きました。私が理解できない特定の問題の1つは、一見単純な問題です。[チェックアウトに進む]ボタンをカートの一番下に移動するにはどうすればよいですか。

設定を解除してから、他のブロックの後で再設定しようとしています。unsetChild部分を機能させることさえできませんでした。これがlocal.xmlからの私のコードです:

<reference name="content">
    <action method="unsetChild">
        <name>checkout.cart.top_methods</name>
    </action>
</reference>

これが機能しない理由は、checkout.xmlでは子の子であるためだと思います。checkout.xmlの一般的なフローは次のとおりです。

<checkout_cart_index>
    <reference name="content">
        <block name="checkout.cart">
            **<block name="checkout.cart.top_methods">**  

何か案は?どうもありがとう、そしてこの投稿の長さについて申し訳ありません!

4

1 に答える 1

2

1°) すべてのレイアウト xml を編集して、ルート参照のレイアウトを 2columns-leftf.phtml テンプレートに変更します。

オブザーバーを通過することもできます。controller_action_layout_generate_blocks_after イベントを観察し、メソッドで次のことを行います。

public function myEventHandling($event) {
    $event->getAction()->getLayout()->getBlock('root')->setTemplate('page/2columns-left.phtml');
}

2°) module Contacts コントローラー インデックス アクション postAction() なので、/contacts/index/post/ である必要があり、動作するはずです。/contacts/ の通常の動作を置き換えて CMS ページを作成した場合を除き (モジュールは、コントローラー インデックス アクション indexAction() に連絡します)、連絡先モジュールではなく、CMS ページの下で検索します。CMS ページに URL として連絡先がある場合は、変更してみてください。

3°) もっと正確に言えますか? 私はあなたが必要とするものを本当に理解していません。フォームまたは既存の評価が表示されませんか?

4°) UnsetChild または remove 命令はグローバルです。置換後に別の名前で設定する必要があります。ただし、テンプレート ディレクトリ (base/default/layout ディレクトリにあるものではない) でレイアウト ファイルを編集して、ブロックを適切な場所に移動し、phtml ファイルで、

  echo $this->getChildHtml('myblock') 

適切な場所に。

于 2013-02-05T09:03:08.757 に答える