2013-02-01 72 views
0

我有3个问题,我的正常谷歌努力没有回答。我是过去两周一直在尝试学习Magento的内部前端Web开发人员。我也是新来张贴堆栈溢出,所以让我知道如果这些会更好张贴为单独的问题或其他东西。重新排列产品块

1.布局 - 使其成为这样每一个单页使用相同的布局

所以我的大部分页面都用我的2columns左的布局,但不是所有的人。我在我的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>页联系我们页面,我想我可能是缺少我的表单动作是文件指向。表格显示,但不提交。
这里是我有我们的联系我们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部分工作。这是我的本地代码。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">** 

任何想法?非常感谢,并且对这篇文章的长度感到抱歉!

回答

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(),所以它应该是/联系人/索引/后/所以它应该工作。除非您使CMS页面替换/联系人/正常行为(模块联系人控制器索引操作indexAction()),它将在您的cms页面下而不是联系人模块中进行搜索。如果您的CMS页面有联系人作为网址,请尝试更改它。

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

4°)UnsetChild或删除指令是全局的,您必须在替换后使用不同的名称进行设置。但是你可以在你的模板目录(而不是在基/默认/布局目录中的)编辑布局文件,以在适当的位置移动的块,并在PHTML文件,尝试移动

echo $this->getChildHtml('myblock') 

在适当的位置。

+0

感谢dagfr的回应。 – Aaron14

+0

1.当你说“编辑所有布局xml”时,这是否意味着编辑每个单独的布局文件,如cart.xml,checkout.xml等?我希望能够在layout.xml中的一个块中完成所有更改,而不必为每个单独的页面设置一个块。也许这是不可能的。 2.有趣的是,我会试一试。 3.对不起,我不是更清楚。当有人撰写评论时,我希望他们添加评论,并对产品评分1-5。评论的文本字段显示出来了,但收视率却没有。 4.这就是我一直在做的,通过phtml文件,但它是一个最佳实践? – Aaron14

+0

1°)是的,你必须改变你所有的layout.xml这是最干净的方式。至少改变所有包含对root的引用。如果您不想这样做,请使用Observer方式。 2°)更新我:) 3°)好吧,需要检查问题是否来自设计不包括评级,或者如果评级已启用(查看目录/评论和评级/管理评级,查看是否至少启用了1个评级 4°)其他解决方案通过更改布局使其“干净”,并且现有文件没有变化,但这不是一个更好的做法。无法解释剩余的40个字符。如果需要,告诉我。 – dagfr