[この記事はMengxi Notesからの転載です]
Joomla は、Web サイトの構築を迅速に完了できる優れた CMS システムで、Web サイトのニーズのほとんどを満たすコンポーネント、モジュール、テンプレートを提供します。これにはコンポーネントが重要な役割を果たします。
Component(コンポーネント)はページのメインデータを表示するために使用されます。 Joomla のコンポーネントは、MVC アーキテクチャを使用して設計されています。 ページ要求が生成されると、その URL にはタスク、ビュー、レイアウト、その他の情報が含まれる場合があります。ここでは、このタスクとビューについて説明します。一般に、URL にタスクが含まれている場合、ビューは含まれません。これは、Joomla がデータベース操作、有効性検証などの特定のタスクを完了すると考えているためです。データの表示を担当します。通常の設計では、タスク内でのタスク処理が完了した後、setRedirect メソッドが呼び出され、データを表示するビューに誘導されます。実際、Joomla では、URL でタスクが指定されていない場合、デフォルトのタスクは表示になります。
2. 質問
プロジェクトでは、ページのメタデータにオープングラフィックプロトコルデータを含める必要があります。オープン グラフィック プロトコルは、共有するデータの説明をソーシャル ネットワークに提供するために使用されます。 ページがタスクを通じて完了し、タスク内で setRedirect を使用して認可検証のデータに基づいて別のビューにジャンプし、検証に合格した後にデータ ページを表示すると、次の問題が発生する可能性があります。共有する このページでは、このページのメタデータにオープン グラフィック プロトコル データを追加しました。これを Facebook や Google+ などのソーシャル ネットワーキング サイトに共有したい場合、データと写真が表示されます。共有ページは、ページに表示したいデータではありません。
3. 解決策
上記の問題は、オープン グラフィック プロトコルのデータ取得がジャンプをサポートしていないためです。ジャンプが発生した場合、通常は Web サイトのホームページにアクセスしてデータを取得することになりますが、これは私たちが望んでいることではありません。問題はsetRedirectです。 setRedirect の原理は、ブラウザに送信される HTML ヘッダーにジャンプ命令が含まれるということです。上記の問題を解決する方法は、setRedirect を使用するのではなく、display メソッドを使用することです。各 JControllerLegacy には、入力に渡したいビュー、レイアウト、その他のデータを設定してから、表示方法ができます。
サンプルコードは次のとおりです:
リーリー上記のコードはコントローラーに書かれています。 InternalRedirect 関数は、$input でビューとレイアウトを設定し (この入力は URL の入力パラメーターを参照します)、JControllerLegecy の表示メソッドを直接呼び出してページを表示します。
checkAvailable メソッドでは、internalRedirect を呼び出す前に、ビューに必要な他のパラメーターも設定されます。
Mengxi の友人は、彼の Web サイトの 1 つを構築しているときにそのような問題に遭遇したと言いました。私たちは Joomla の実装コードについて話し合い、分析したところ、Joomla コンポーネントの開発に精通している限り、解決策は実際には非常に簡単であることがわかりました。ご質問がございましたら、何でもご相談ください
この記事があなたが遭遇した問題を解決できることを願っています。
。