9

特定の記事のみテンプレートを変更する方法はありますか? 記事をメニューにリンクしなくても機能することに注意してください。

4

4 に答える 4

5

テンプレートのオーバーライドがメニューの位置に依存しないようにする場合は、別のテンプレートをメニューに割り当てる標準の joomla の方法は機能しません。手を汚してカスタムコードを書く必要があります。テンプレート切り替えのトリガーとして article_id を使用する必要があります。

私は仕事でそのようなことをしましたが、これがどのように達成されたかを正確に覚えていません。コードが見つかり次第、ここに投稿します。

編集:コードが見つかりました:)

/includes/application.php ファイル、具体的には getTemplate() メソッドを編集する必要があります。このメソッドの最後で、直前に:

// Fallback template
if (!file_exists(JPATH_THEMES.DS.$template.DS.'index.php')) {
  $template = 'rhuk_milkyway';
}

次のように、カスタム テンプレートを適用するための条件を追加できます。

//CUSTOM TEMPLATE FOR THE ARTICLE 13
if (JRequest::getVar('id')=='13' && JRequest::getVar('option')=='com_content') {
  $template = $custom_template_name;
}

これにより、$custom_template_name 内にある名前のカスタム テンプレートが id=13 の記事に適用されます。simplecaddy で行ったように、別のテンプレートをコンポーネントに適用するためにも使用できます。

//TEMPLATE FOR SIMPLECADDY
if (JRequest::getVar('option')=='com_caddy'){
  $template = 'shop';
}
于 2010-07-18T07:31:24.227 に答える
1

回避できる場合は、テンプレートに何かをハードコーディングしないようにする必要があります。メニューから記事がリンクされないように指定する理由がわかりません。記述やコーディングを行わずにこれを実現する最も簡単な方法は、新しいメニューを作成してから、テンプレートを指定する記事にリンクするメニュー項目を追加することです。メニューをモジュールのどこかに配置する必要がないため、サイトに表示されることはありませんが、テンプレートマネージャーのメニュー割り当てには表示されます。

これは、単一の記事、カテゴリ、セクション、またはコンポーネントで行うことができます。テンプレートを関連付けるメニューリンクがある限り。私は常に、サイトの運営に必要なリンクを配置するための管理者専用メニューを作成していますが、ユーザーがアクセスする必要はありません。

于 2010-09-07T02:59:00.090 に答える
1

これは古い投稿ですが、私の考えを共有したいと思います: onAfterInitialize() 関数をシステム プラグインに実装することで、単一の記事のテンプレートを簡単に変更できます。Joomla コアを変更する必要はありません。

これは Joomla 1.5 で機能しますが、2.5 でも機能するはずです。

function onAfterInitialise(){
  if(true){ // f.ex. test for article ID or whatever
    JRequest::setVar('template', 'beez'); // change template
  }
}

joomla 3.x バージョンでは、url-parameters の処理が異なります。以下は joomla 3.4.8 でテストされました。

public function onAfterInitialise()
{
  $app=JFactory::getApplication();
  if(true){ // f.ex. test for article ID or whatever
    $app->input->set('template', 'beez3');
  }
}

Joomla のプラグインの作成に関する詳細はこちら

于 2016-02-02T22:34:30.880 に答える
1

ブレントが言ったように、コア Joomla コードを変更する誘惑を避けてください! これを行うと、Joomla のアップグレードができなくなる可能性があります。

「隠しメニュー項目」テクニック (便利ですが、場合によっては SEF URL を壊す可能性があります) とは別に、便利なツールはChameleonです。これにより、特定の記事/カテゴリ/セクション (さらに、ブラウザーの種類、ユーザー グループ、コンポーネントなど) を選択し、これらを使用して特定のテンプレートをトリガーすることができます。

于 2011-10-28T18:41:29.040 に答える