CMS からアクティブな静的ページを動的に表示するメニューを作成したいと考えています。たとえば、CMS に次のページがあるとします。
- 私たちについて (有効)
- 配送と返金 (無効)
- 利用規約 (有効)
- 連絡先 (有効)
メニューは次のようになります。
私たちについて | 利用規約 | 連絡先
始める方法についていくつかのヒントが必要です。多分誰かがすでにこれをやったことがありますか?
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>
Magento カタログ メニューへの静的リンクを配置する別の方法を次に示します。
まず、静的ページを作成し、「my-test-page」などの URL キーを割り当てます。
/app/code/core/Mage/Catalog/Blockに移動し、ファイルNavigation.php
を/app/code/local/Mage/ Catalog/Blockにコピーします。これで、Magento のアップグレードで変更が失われる可能性を心配することなく編集できます。 .
ファイルNavigation.php
を265 行目 (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-」を追加することで、カテゴリ リンクを静的ページ リンクに変換できます。
ルートなし以外のものを除外するために、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') { ?>