Magento静态页面菜单

时间:2009-08-04 11:03:32

标签: php magento templates menu static

我想创建一个菜单,动态显示来自CMS的活动静态页面;例如,如果在我的CMS中我有这些页面:

  • 关于我们(已启用)
  • 运输&退款(已停用)
  • 条款及细则(已启用)
  • 联系人(已启用)

然后菜单看起来像:

关于我们|条款和条件|联系人

我只需要一些关于如何开始的提示;也许有人之前已经这样做了?

4 个答案:

答案 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-”将类别链接转换为静态页面链接。