我想创建一个菜单,动态显示来自CMS的活动静态页面;例如,如果在我的CMS中我有这些页面:
然后菜单看起来像:
关于我们|条款和条件|联系人
我只需要一些关于如何开始的提示;也许有人之前已经这样做了?
答案 0 :(得分:5)
<强> Dougle 强> 非常感谢,这真的很有帮助!
<强>菲德强> 在Magento CMS中,您可以创建只能使用其IDENTIFIER访问的静态页面;我想要的是以某种方式制作一个菜单,自动显示ACTIVE(启用)静态页面;如果将状态设置为“禁用”,则不应该在菜单中;
这里是我使用的代码,请注意,IF $PageData['identifier']!='no-route';
no-rute是404页面,所以我不需要它在菜单中,但必须启用它,以便Magento将404错误重定向到此页;
<div>
<?php $collection = Mage::getModel('cms/page')->getCollection()->addStoreFilter(Mage::app()->getStore()->getId());?>
<?php $collection->getSelect()
->where('is_active = 1'); ?>
<ul>
<?php foreach ($collection as $page): ?>
<?php $PageData = $page->getData(); ?>
<?php if($PageData['identifier']!='no-route') { ?>
<li>
<a href="/<?php echo $PageData['identifier']?>"><?php echo $PageData['title'] ?></a>
</li>
<?php } ?>
<?php endforeach; ?>
</div>
答案 1 :(得分:1)
在 page/html
块中创建一个包含以下内容的方法:
$collection = Mage::getModel('cms/page')->getCollection()->addStoreFilter(Mage::app()->getStore()->getId());
$collection->getSelect()
->where('is_active = 1')
->order('main_table.sort_order ASC');
return $collection;
您可以在模板中调用,foreach()
可以通过创建LI来调用
根据您的设置,可能需要一些调整思路。
从内存中我认为这是内置的,看看 design/frontend/../../templates/page/
我似乎记得在其中一个phtml文件中删除了一些类似的功能。
其中,订单和其他选择内容可在 /lib/Zend/Db/Select.php
(FYI)中找到
答案 2 :(得分:1)
要排除多个无路由,我在CMS页面中添加了一个新字段,以指定页面是否应该使用true或false来显示菜单项。我跟着Add a new CMS Field并在main.php中使用了以下内容
$fieldset->addField('menu', 'text', array(
'name' => 'menu',
'label' => Mage::helper('cms')->__('On Menu'),
'title' => Mage::helper('cms')->__('On Menu'),
'required' => true,
'disabled' => $isElementDisabled
));
然后改变了这一行:
<?php if($PageData['identifier']!='no-route') { ?>
到
<?php if($PageData['menu']!= 'false') { ?>
答案 3 :(得分:1)
这是将静态链接放到Magento目录菜单的另一种方法。
首先,创建静态页面,为其分配一些url键,例如“my-test-page”。
转到 / app / code / core / Mage / Catalog / Block ,将文件Navigation.php
复制到 / app / code / local / Mage / Catalog / Block ,现在你可以编辑它而不用担心Magento升级可能会失去你的更改。
在第265行打开文件Navigation.php
(magento 1.4)function _renderCategoryMenuItemHtml(...)
,更改代码:
$htmlLi .= '>';
$html[] = $htmlLi;
$html[] = '<a href="'.$this->getCategoryUrl($category).'"'.$linkClass.'>';
$html[] = '<span>' . $this->escapeHtml($category->getName()) . '</span>';
$html[] = '</a>';
到那个:
$htmlLi .= '>';
$html[] = $htmlLi;
if(preg_match('/\/static-/', $this->getCategoryUrl($category))) {
$link_url = str_replace("static-", "", $this->getCategoryUrl($category));
} else {
$link_url = $this->getCategoryUrl($category);
}
$html[] = '<a href="'.$link_url.'"'.$linkClass.'>';
$html[] = '<span>' . $this->escapeHtml($category->getName()) . '</span>';
$html[] = '</a>';
现在转到类别管理,修改类别,将URL密钥更改为:“static-my-test-page”并取消选中“为旧网址创建永久重定向”复选框。保存类别后,您将在Magento的顶级类别菜单中链接到my-test-page。
因此,在完成所有更改后,您可以通过在类别URL键中添加前缀“static-”将类别链接转换为静态页面链接。