重新排列产品块

时间:2013-02-01 16:07:09

标签: magento magento-1.7

我有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&gt;页面下的联系我们页面,我想我可能错过了我的表单操作所指向的文件。表格显示,但它没有提交 以下是我在“联系我们”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。产品评论 - 获得&#34;整体&#34;评级显示

我有一个评论div,它会在您登录后使用我的产品页面上显示的form.phtml并添加评论,但评级不会显示。我显然不满足控制是否应显示评级的if语句的条件。以下是我认为它被抓住的if语句:

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

我不确定如何满足这些条件。

4。重新排列块 - 使用local.xml重新排列块的行进位置

在我开始养成坏习惯之前,我想确保自己使用最佳实践。我通常只是进入模板文件并手动移动phtml中出现的内容,但我听说最好在XML中进行这些更改。我似乎无法弄清楚的一个特殊问题是一个看似简单的问题:我如何制作&#34;继续结账&#34;按钮移动到购物车的底部?

我试图取消设置,然后在其他块之后重新设置它。我甚至无法让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">**  

有什么想法吗?非常感谢,对这篇文章的篇幅感到抱歉!

1 个答案:

答案 0 :(得分: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 / normal行为(模块联系控制器索引操作indexAction()),否则它将在您的cms页面下搜索,而不是在contacts模块中搜索。如果您的CMS页面有联系人作为网址,请尝试更改它。

3°)你能更准确吗?我真的不明白你需要什么。表格或现有评级没有出现?

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

  echo $this->getChildHtml('myblock') 

在适当的位置。