0

我有 3 个问题,我的正常谷歌搜索工作没有回答。我是一名内部前端 Web 开发人员,过去两周一直在尝试学习 Magento。我也是在 Stack Overflow 上发帖的新手,所以让我知道这些是否会更好地发布为单独的问题或其他内容。

1. 布局 - 使每个页面都使用相同的布局

所以我的大部分页面都使用我的 2columns-left 布局,但不是全部。我在我的 local.xml 中有一些设置,还有一些我只是直接在 .phtml 页面中硬编码。我原以为以下代码会使所有页面使用相同的布局:

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

当我在网站上工作时,我通常看不到很多页面,它们都使用默认的 Magento 布局,例如启用 /cookies 的页面或评论页面。如果您想在整个站点上使用相同的布局,而不是在 local.xml 中为每个页面设置这样的块,那么统一所有页面的最佳做法是什么?

2. 联系我们表格 - 点击提交按钮不起作用

我正在编辑 CMS>Pages 下的联系我们页面,我想我可能错过了我的表单操作指向的文件。表格出现了,但没有提交。
这是我在联系我们 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 中进行这些更改。我似乎无法弄清楚的一个特殊问题是一个看似简单的问题:如何使“继续结帐”按钮移动到购物车的底部?

我正在尝试取消设置它,然后在其他块之后重新设置它。我什至无法让 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°)模块联系人控制器索引操作 postAction() 所以它应该是 /contacts/index/post/ 所以它应该工作。除非您让您的 CMS 页面替换 /contacts/ 正常行为(模块联系人控制器索引操作 indexAction() ),否则它将在您的 cms 页面而不是联系人模块中搜索。如果您的 CMS 页面有联系人作为 url,请尝试更改它。

3°)你能更精确吗?我真的不明白你需要什么。表格或现有评级未显示?

4°) UnsetChild 或 remove 指令是全局的,您必须在替换后将其设置为不同的名称。但是您可以在模板目录中编辑布局文件(而不是 base/default/layout 目录中的那些)以将块移动到正确的位置,然后在 phtml 文件中尝试移动

  echo $this->getChildHtml('myblock') 

在适当的位置。

于 2013-02-05T09:03:08.757 回答