web-dev-qa-db-ja.com

index.phpでカテゴリの紹介画像を取得する

カテゴリのイントロ画像をカテゴリページに表示したい

カテゴリブログのテンプレートオーバーライドがあります。

レイアウトのため、コードをオーバーライドの外側に配置する必要があります-index.php内

ブログレイアウトの内部では、次のコードを使用してイントロ画像を読み込むことができます。

<?php if ($this->category->getParams()->get('image')) : ?>
   <?php echo $this->category->getParams()->get('image'); ?>
<?php endif; ?>

これをindex.phpに配置すると、次のエラーが表示されます。

通知:未定義のプロパティ:JDocumentHtml :: $ category in C:\ xampp\htdocs\PATHTOTEMPLATE\index.php on line 101

致命的なエラー:101行目のC:\ xampp\htdocs\PATHTOTEMPLATE\index.phpのnullに対するメンバー関数getParams()の呼び出し

これでこのようにロードすることも可能ですか?それともカテゴリービューにある必要がありますか?

2
zenbormi

ここでは、joomlaの要求と応答のライフサイクルについて少し知っておくと役立ちます。 Joomlaは次の順序で実行されます:1. bootstrapアプリケーション2.ルーター3.コンポーネント(独自のレイアウトオーバーライドを含む)4.モジュール5.テンプレート

Jsessionやjinputなどのさまざまなオブジェクトを使用すると、ライフサイクル中に変数を取得および設定できるため、カテゴリレイアウトのオーバーライドから画像のhtmlをjinput変数に設定するだけで、任意のモジュールまたはテンプレートphpで取得できます。値を取得するときにRAWフィルターを使用する必要があることに注意してください。そうしないと、おそらくHTMLが取り除かれます。

これはあなたのカテゴリーレイアウトに入ります

JFactory::getApplication()->input->set('category_image_html',$this->category->getParams()->get('image'));

これは任意のモジュールまたはテンプレートphpにすることができます

echo JFactory::getApplication()->input->get('category_image_html', 'default_value_if_you_want_one', 'RAW');
2
jamesgarrett

まず、index.phpに入力する必要があるコードは、すべてのページに表示されるコードだけです。あなたがしたいのはカテゴリビューなので、あなたのコードはカテゴリビューのオーバーライドに入る必要があります

そのようなものをindex.phpで動作させることは可能ですが、それは完全に間違ったことなので、私はあなたがどのようにできるかを提案するつもりはありません。

「カテゴリの紹介画像をカテゴリページに表示したい」

どうしたの?カテゴリに画像を割り当てると、Joomlaはカテゴリビューに画像を表示します。これはそのままで機能するので、なぜ何をする必要があるのか​​理解できません。

1
Seth Warburton