1

答案可能是几个帖子的组合,但我还不是很擅长 Magento,所以我还是要问:

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

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

4

3 回答 3

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 页面时,布局已经加载并解析,因此您添加的块不能再被其他块或布局文件修改。

于 2013-10-09T08:20:05.093 回答
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): ?>
<a href="<?php echo $this->getUrl('customer/account/login') ?>"><?php echo $this->__('Log In') ?></a>
<?php else: ?>
<a href="<?php echo $this->getUrl('customer/account/logout') ?>"><?php echo $this->__('Log Out') ?></a>
<?php endif ?>

我也会很高兴有一个解决方案让我能够在 cms 页面中使用 php,反正我是唯一的管理员。

编辑
我找到了一个可行的解决方案:
我创建了一个包含上述片段的新 phtml 文件。我在模板文件夹中创建了一个新文件夹“customphp”并将其保存为 test.phtml。
在 cms 页面中,我添加了一个块:{{block type="core/template" name="whatever_unique-name-i-want" template="customphp/test.phtml"}}
Tada!

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

于 2013-10-09T14:35:47.097 回答
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>
于 2013-10-09T09:53:41.483 回答