我一直在编辑Magento的默认CSS来改变外观,并且已经到了我想要移动一些内容块的位置。
我通过CSS杀死了左栏
.col-left { display: none; }
然后增加主要内容部分的宽度以创建“两列布局”。我现在要做的是将类别的导航移动到右列。我不知道怎么......
如何在Magento中移动内容块? :/
答案 0 :(得分:3)
在Magento中进行大型移动最好通过修改布局XML文件来完成,而不是通过CSS进行攻击。在文件catalog.xml
中,以下是相关行:
<reference name="top.menu">
<block type="catalog/navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"/>
</reference>
<reference name="left">
<!--<block type="core/template" name="left.permanent.callout" template="callouts/left_col.phtml">
<action method="setImgSrc"><src>images/media/col_left_callout.jpg</src></action>
<action method="setImgAlt" translate="alt" module="catalog"><alt>Our customer service is available 24/7. Call us at (555) 555-0123.</alt></action>
<action method="setLinkUrl"><url>checkout/cart</url></action>
</block>-->
</reference>
<reference name="right">
<!--<block type="core/template" before="cart_sidebar" name="catalog.compare.sidebar" template="catalog/product/compare/sidebar.phtml"/>-->
<!--<block type="core/template" name="right.permanent.callout" template="callouts/right_col.phtml"/>-->
</reference>
要渲染topnav,请将catalog/navigation
行移动到左侧或右侧列块中,导航将如此呈现。
希望有所帮助!
谢谢, 乔
答案 1 :(得分:2)
Magento有四种“标准”布局:1col,3col,2col-left和2col-right,但如果你愿意,你可以添加更多。您需要更改编辑页面上使用的布局,而不是使用CSS进行黑客攻击。这绝对是错误的做法。
正如Joseph所指出的,Magento的模板系统由 blocks 或 templates 组成,它们由 layout 文件定位。模板是标准的php,虽然以.phtml
为前缀,布局是xml。您可以在app/design/frontend/$interface/$theme/(template|layout)
中找到大量这些文件。
Magento因其糟糕的文档而闻名,但您可能想要查看他们的Designer's Guide,其中详细介绍了模板和布局的概念,包括如何移动块。
布局文件的语法远非直截了当,但是,在这个阶段你需要知道的是,为了引用右手中的块,左手和内容列需要注意:
<reference name="(right|left|content)"></reference>
将<block />
声明从一个移到另一个,导致块移动。
要记住的另一个关键点是要注意:
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
在引用根容器时使用setTemplate
操作,您可以轻松地将模板切换为1column
,2columns-left
,2columns-right
或3columns
。布局模板本身可以在template/page/
。