2

プラグインと連携して Web サイトのコンテキスト背景を作成するモジュールを作成しています。

前提は次のとおりです。ユーザーがホームページにいる場合、背景画像はプラグイン パラメータでデフォルトとして指定されているものです。

ユーザーがカテゴリ リスト ページを表示している場合、背景画像は (カスタム) コンポーネント パラメータでデフォルトとして指定されているものです。

ユーザーが記事リスト ページを表示している場合、背景画像は (カスタム) カテゴリ パラメータでデフォルトとして指定されているものです。

ユーザーが記事ページにいる場合、背景画像は (カスタム) 記事パラメーターでデフォルトとして指定されているものです。

これをさらに楽しくするために、記事の代わりにプロファイルを表示する独自のコンポーネントを作成しました。これらはまったく同じように機能しますが、コンテンツ コンポーネントが行うすべてのコーディングが含まれているとは限りません。カスタム コンポーネントを作成する理由は、この質問の範囲を超えています。

プラグインは基本的なマークアップを作成してページに追加します。これはサイト全体で正常に機能します。ホームページは、私が必要としているとおりに機能します。

モジュールはスタイルシートなどを追加することになっています。ドキュメントのヘッダーに、それは問題ありません。問題は、モジュールが最初にコンテキストを確認し、次に指定されたコンテキストからパラメーターをロードすることになっていることです。ここに私の問題があります: コンテキストを確認し、上記のルールに従ってパラメーターを読み取るためのコードが見つかりません。

プラグインとして (モジュールの支援なしで) 試してみましたが、コンテンツ プラグインとしてはホームページで動作せず、システム プラグインとしてはコンテンツ パラメータにアクセスできませんでした。2 つのプラグインを連携させることも検討しましたが、これは悪い習慣のようです。おそらく、コンテンツでもシステムでもないが、両方のコンテキストにアクセスできる新しいプラグインでしょうか?

追加情報:

エンティティのさまざまなグループを表す多くのコンポーネントを作成しました。各コンポーネントには独自のパラメータがありますが、すべてのコンポーネントに共通するパラメータもあります。各コンポーネントには、コア Joomla の「バナー」および「連絡先」コンポーネントと同じ方法で「インスタンス化」される機能があります。一般的なパラメーターの例は、'gallery' パラメーターです。すべてのコンポーネントには「ギャラリー」パラメーターがあり、各「インスタンス」には独自の値を持つオプションがあります。「gallery」パラメーターには、特定のコンポーネント インスタンスに関連する画像を含むフォルダーのフォルダー URL が含まれます。

これがどのようにまとめられるべきかの例:

ご想像のとおり、ドライバーのコンテナーとして機能する「ドライバー」というコンポーネントがあります。コンポーネントの管理メニューで、名前や年齢などを指定してドライバーを追加し、ドライバーの顔写真とギャラリー URL を含めることができます。

サイト側のユーザーがドライバー ページを読み込むときに、ギャラリー フォルダーからすべての画像を読み込み、それらをバックグラウンドで回転させるコードが必要です。ドライバーのオプション ページを参照しなくても、いつでもイメージを追加/削除/置換できるようにしたいと考えています。さらに複雑なことに、各背景画像が読み込まれると、EXIF メタデータが画像から読み取られ、ページ下部の前景にサムネイルと共に表示されます。

現在、これはすべてサイトのルートで完全に機能し、ほとんどの場合、サイト全体で機能します. 落ち込む部分は、モジュールによるドライバーの「インスタンス」からの変数の取得です。確かに、きちんとした SQL 呼び出しと db 呼び出しを書くことはできますが、モジュールがコンポーネント、カテゴリ、および記事のパラメーターを取得する方法はほとんどありますか?

4

1 に答える 1

0

moduleclass_sfx を試しましたか? 次のような css クラスを定義します。

.myModule { 
   background-image: url('myimage.png'); 
} 
.myComponent { 
    background-image: url('mycompimage.png'); 
}
.myArticle { 
    background-image: url('myarticleimage.png'); 
}

次に、モジュール class_sfx の各モジュール/コンポーネント パラメーター オプションで、目的のクラスを末尾にスペースを付けて入力します (例: " myComponent" (引用符なし))。

別の方法は、おそらくコンポーネント/モジュールのパラメーターを定義して呼び出すことです。

<body style="background-image: url('/path_to_image_folder/<php echo $params->get('param_name') ?>');">

または、おそらくあなたの質問をよく理解していませんでしたが、役に立てば幸いです。

于 2012-10-15T23:51:56.563 に答える