web-dev-qa-db-ja.com

システムメッセージを含むページをロードする方法

システムメッセージを含むページをロードするにはどうすればよいですか?

具体的にはリンクがあり、ユーザーがリンクをクリックすると、システムメッセージが含まれる特定のページが開きます。

私のサイトではシステムメッセージを問題なく見ることができます。テンプレートには

<jdoc:include type="message" />

これを行うための適切なコードが何であるか私は知りません。おそらく、リンクは実際にはonclickイベントを持つボタンである必要がありますか?

4
Hannah Smith

ブライアンの答え(@Brian Bolliに感謝します)とこの投稿を使用する- https://stackoverflow.com/questions/19323010/execute-php-function-with-onclick -私は作る方法を理解しましたリンクは、メッセージが上部にあるページをロードします。

リンクのコードは次のようになります。

<a href="index.php/animals?multiple=true" title="Add multiple animals to mob"><i class="icon-plus "></i>Add multiple animals</a>

これは、multipleというURLでロードしたいページに変数を渡しており、trueに設定されています。

ロードされるページテンプレートでは、コードは次のようになります。

if (isset($_GET['multiple'])) :
    $msg = 'Very helpful message';
    JFactory::getApplication()->enqueueMessage($msg, 'message'); 
endif;

変数が設定されているかどうかを確認し、設定されている場合は、必要なメッセージが表示されます。

2
Hannah Smith

次のように、ページレンダーサイクルの任意の時点でシステムメッセージを挿入できます。

JFactory :: getApplication()-> enqueueMessage( 'My gloious message'、 'error');

Jdocタグは、基本的にプレースHostを作成し、メッセージの挿入と表示に必要なファイルをロードします。これが役に立てば幸いですが、コードでメッセージを作成する予定の場所によっては、関連する場合があります。それでも問題が発生する場合は、メッセージを作成するコードを投稿してください。

*編集1 *

カスタムテンプレートとJoomlaの出力オーバーライドの機能を活用して、目的の機能を実現できます。この例では、記事のコンポーネントビューをオーバーライドすることを想定しています。

最初に、カスタムテンプレートのルートフォルダにディレクトリパスを作成します。

templates/mytemplate/html/com_content/article/

次に、コアコンテンツコンポーネントのdefault.phpファイルを新しいディレクトリにコピーします。この例のファイルは、次のパスにあります。

components/com_content/views/article/tmpl/default.php

このファイルの先頭に、新しいシステムメッセージをキューに入れるメソッドを追加します。

JFactory::getApplication()->enqueueMessage('My glorious message','error');

オーバーライドに関するJoomla Docsへの3つのリンクを貼り付けて、より詳細な説明を提供しました。

5
Brian Bolli