6

そのため、メニュー項目の一部が動的なカテゴリ リストであるメニューがあります。左側のナビゲーション内の次のようなもの (例):

Menu One
Category Two
  - Dynamic Article 1
  - Dynamic Article 2
  - Dynamic Article 3
Menu Three
Category Four
  - Dynamic Article 1
  - Dynamic Article 2
  - Dynamic Article 3  

編集

メニューの説明がわかりにくいと思うので、ここで少し拡大します。

非常におしゃれに見え、次のように構成された左側のナビゲーションがあるとします。

 - About Us
   - Jack
   - Joe
   - Our Dog
 - Success Stories
   - Sammy in South Dakota
   - Delilah in Delaware
   - Arty from Arkansas
   - ....
 - Contact Us
 - Recent Articles
   - 9/4
   - 9/2
   - 8/30
   - 8/27
   - 8/25
   - ...

また、ストーリーと記事は頻繁に更新され、メニュー項目を追加および削除するプロセスはメンテナンスが多すぎるため、ストーリーと記事を独自のカテゴリに変更することは理にかなっています。また、「サクセス ストーリー」セクションと「最近の記事」セクションの両方で、最後の 'x' 記事、たとえば 5 が必要であると仮定します。

メニューが 1 つしかない場合は、Joomla の最近のニュース モジュールを使用できます ( 「カテゴリ リスト」に似ていますが、メニュー領域に表示されます)。しかし、それを挿入しようとすると、既存のメニューの前または後に記事がリストされます (たとえば、私たちについて / お問い合わせ / 成功事例 / 最近の記事)。

静的 (1 つのページに移動する 1 つのメニュー リンク) と動的 (メニューがそのカテゴリの最後の x 件の記事を表示する) のメニュー項目が混在するように、メニュー構造内に統合する必要があります。そのカテゴリ リストは、メニューが動的に生成されている間にサブルーチンとして呼び出す必要があります。または、メニュー項目 (サクセス ストーリー) を、メニュー構造内のカテゴリ リストに置き換える必要があります。メニューの代わりにモジュールを配置して、そこに最新ニュースを配置することもできますか?


プラグインをビルドすると書かれたこの記事を見つけました。このJoomla docは、1.5 用ですが、最新のニュース モジュールがメニューにプラグインされるだけのように見えますが、そのようには機能しませんでした。

私は非常にシンプルなプラグインを作成し、PHP と Joomla の開発を学んでいます。カテゴリ リストをプラグインするためにメニュー構造をどのようにインターセプトしますか? または、「すぐに使える」方法があれば、私はすべて耳にします。それがプラグインの場合、メニューをどのようにインターセプトしますか?

私が最初に考えたのは、カテゴリ = 15 の場合、「カテゴリ 15」のモジュール位置を出力するということです。このようなもの。私がそこで正しい軌道に乗っているかどうかはわかりません。

いつもありがとうございます!

4

1 に答える 1

3

これはバージョン1以降のjoomlaにはありません。これらの手順に従うと設定されます:)

mod_menuのテンプレートオーバーライドが必要です。ファイルをコピーするだけです。

/modules/mod_menu/tmpl/default.php

/templates/[YOUR_CURRENT TEMPLATE]/html/mod_menu/default.php

注:フォルダhtmlおよびmod_menuが現在存在しない場合は、それらを作成する必要がある場合があります

次の行を見つけます:(〜52行目)

/templates/[YOUR_CURRENTTEMPLATE]/html/mod_menu/default.phpにあります

if (!empty($class)) {
    $class = ' class="'.trim($class) .'"';
}

そして、それらの直後に次のコードを挿入します。

if(strpos($item->title, '#dynamic-cat') !== false)
{
    require_once(JPATH_SITE.DS.'components'.DS.'com_content'.DS.'models'.DS.'articles.php');
    $model  = new ContentModelArticles();
    $config = JFactory::getConfig();
    if($spcCat = (int) str_replace('#dynamic-cat','', $item->title)) {
        $model->setState('filter.category_id', $spcCat);
    }
    $db     = JFactory::getDBO();
    $db->setQuery($model->getListQuery());
    foreach($db->loadObjectList() as $tItem) {
        $link   = $config->get('sef') ? str_replace($item->alias, $tItem->id.'-'.$tItem->alias, $item->route) :  'index.php?option=com_content&view=article&id='.$tItem->id.'&Itemid='.$item->parent_id;
        $iclass = $item->anchor_css ? 'class="'.$item->anchor_css.'" ' : ''; ?>
        <li <?php echo $class;?> ><a <?php echo $iclass; ?>href="<?php echo $link ?>"><?php echo $tItem->title; ?></a></li><?php
    }
    echo '</ul>';
    continue;
}

動的に作成されたリンクに置き換えられるメニュー項目

  1. タイプ「単一記事」の新しいメニュー項目を作成します
  2. 「必要な設定」で、使用したいカテゴリから任意の記事を選択します
  3. 「メニュータイトル」を #dynamic-cat71に設定します

     where 71 is Category ID (optional)
    
  4. 「親アイテム」を、ダイナミックメニューを挿入する対応するメニューアイテムに設定します

作成したばかりのメニュー項目は、選択したカテゴリの記事へのリンクに動的に置き換えられます(存在する場合)

これに問題がある場合はお知らせください。私はSEF対応とSEF無効の両方のjoomla>1.6サイトでこの方法を使用しています

于 2012-09-10T09:29:23.443 に答える