4

CMS からアクティブな静的ページを動的に表示するメニューを作成したいと考えています。たとえば、CMS に次のページがあるとします。

  • 私たちについて (有効)
  • 配送と返金 (無効)
  • 利用規約 (有効)
  • 連絡先 (有効)

メニューは次のようになります。

私たちについて | 利用規約 | 連絡先

始める方法についていくつかのヒントが必要です。多分誰かがすでにこれをやったことがありますか?

4

4 に答える 4

5

Dougle どうもありがとう、それは本当に役に立ちました!

Fede in Magento CMS では、IDENTIFIER を使用してのみアクセスできる静的ページを作成できます。私が欲しかったのは、アクティブな(有効な)静的ページを自動的に表示するメニューを何らかの方法で作成することです。ステータスを無効に設定した場合、メニューには表示されません。

これが私が使用したコードです。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>
于 2009-08-06T16:14:16.723 に答える
1

Magento カタログ メニューへの静的リンクを配置する別の方法を次に示します。

まず、静的ページを作成し、「my-test-page」などの URL キーを割り当てます。

/app/code/core/Mage/Catalog/Blockに移動し、ファイルNavigation.php/app/code/local/Mage/ Catalog/Blockにコピーします。これで、Magento のアップグレードで変更が失われる可能性を心配することなく編集できます。 .

ファイルNavigation.php265 行目 (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」に変更し、 「古い URL の永続的なリダイレクトを作成する」チェックボックスをオフにします。カテゴリを保存すると、Magento のトップ カテゴリ メニューに my-test-page へのリンクが表示されます。

したがって、すべての変更の後、カテゴリ URL キーにプレフィックス「static-」を追加することで、カテゴリ リンクを静的ページ リンクに変換できます。

于 2011-10-20T16:43:15.867 に答える
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') { ?>
于 2011-01-18T07:05:20.190 に答える