如何将topLinks添加到magento的cms页面

时间:2013-10-08 19:23:31

标签: magento content-management-system block

答案很可能就是几个帖子的组合,但我对Magento并不擅长,所以无论如何我都要问:

我想将topLinks插入到cms页面中。 我尝试了<?php echo $this->getChildHtml('topLinks') ?>,但这不起作用,它只是将代码显示为页面上的文本。 我试过{{block type="core/template" name="top.Links" as="topLinks" template="page/template/links.phtml"}}但没有出现任何内容。

我使用{{block type="core/template" name="top.search" as="topSearch" template="catalogsearch/form.mini.phtml"}}成功地将搜索表单添加到cms页面,所以我想我可能只是块类型错误或者其他东西。 我做错了什么?

3 个答案:

答案 0 :(得分:3)

TL; DR :嗯......你不能 为什么?topLinks块是page/template_links类型的“容器”块。这只是在布局中添加,但其他布局句柄或块添加了它的链接。例如customer.xml布局文件中的xml的这一部分

<reference name="top.links">
        <action method="addLink" translate="label title" module="customer"><label>My Account</label><url helper="customer/getAccountUrl"/><title>My Account</title><prepare/><urlParams/><position>10</position></action>
    </reference>

添加My account链接。还有其他人。 总之,topLinks块本身并没有意义。它只是一个可以被其他块修改的占位符 渲染cms页面时,已经解析了加载的布局,因此您添加的块不能再被其他块或布局文件修改。

答案 1 :(得分:1)

您可以硬编码将顶部链接放在您的cms页面中,如下所示..

 <ul id="nav">
 <li class="level0 parent"><a href="<?php echo $this->getUrl('customer/account')?>"><span>My Account</span></a></li>
 <li class="level0 parent"><a href="<?php echo $this->getUrl('wishlist')?>"><span>My Wishlist</span></a></li>
 <li class="level0 parent"><a href="<?php echo $this->getUrl('checkout/cart')?>"><span>My Cart</span></a></li>
 <li class="level0 parent"><a href="<?php echo $this->getUrl('checkout')?>"><span>Checkout</span></a></li>
 <li class="level0 parent"><a href="<?php echo $this->getUrl('customer/account/login')?>"><span>Log In</span></a></li>
 </ul>

答案 2 :(得分:1)

@Marius谢谢,我在那里学到了新东西。我仍然在努力理解Magento结构的复杂细节,但我正在研究它。
@chirag我试过,但php不能直接在cms页面中工作,所以它试图链接到http://mymagentopage/<?php echo $this->getUrl('customer/account')?>。我当然可以直接链接到http://mymagentopage/customer/account但是对于一些链接我会错过功能:
登录时“登录”更改为“注销”并将客户注销而不是转到帐户屏幕 将产品添加到购物车时,“购物车”更改为“购物车(2)” 等(我不使用心愿单)
有没有办法重新获得这项功能?

我找到了这个代码片段,但它的php在cms页面中不起作用:
<?php if (Mage::getSingleton('customer/session')->isLoggedIn()==0): ?> {
{1}} {
{1}} {
{1}} {
{1}}

我我也很高兴能让我在cms页面使用php的解决方案,无论如何我是唯一的管理员。

修改
我找到了一个有效的解决方案:
我创建了一个包含上述代码段的新phtml文件。我在我的模板文件夹中创建了一个新文件夹'customphp'并将其保存为test.phtml。
在cms页面中,我添加了一个块: <a href="<?php echo $this->getUrl('customer/account/login') ?>"><?php echo $this->__('Log In') ?></a>
田田!

这就是我的想法:http://www.magentocommerce.com/boards/viewthread/439880/