web-dev-qa-db-ja.com

Joomla定数から現在のテンプレートパス

カスタムモジュールを開発しています。バックエンドで選択したいくつかの画像を表示するには、このモジュールが必要です。そのため、モジュールのxmlファイルで「imagelist」タイプのパラメーターを宣言しています。

    <fields name="params">
        <fieldset name="advanced">
            <field
                name="project1-image"
                type="imagelist"
                directory="???\images"
                label="..."
                description="..." />
        </fieldset>
    </fields>

問題は、「images」ディレクトリが一部のJoomlaテンプレートにあることです。 "JPATH_COMPONENT"や "JPATH_BASE"のような定数が現在サイトに適用されているテンプレートを指していますか?または、サイト管理者にファイル名を書いて、それを私のモジュールのphpファイルで見つけるように強制する必要がありますか(これは悪い解決策のようです)。

ディレクトリの値を入力すると、Joomlaインストールのルートからの相対値になります。したがって、テンプレートから画像を取得する場合は、次のコードを使用します。

directory="templates/TEMPLATE_NAME/images"

これは事前定義されたテンプレートにのみ使用でき、cannotcurrentテンプレートに使用できます。

そのためには、カスタムフォームフィールドを作成する必要があります。 imagelistフォームフィールドをコピーしてパスを変更することをお勧めします

1
Lodder

見てください https://Gist.github.com/leFlea-snippets/4602845

PHP:Joomla-アクティブなテンプレートパスを取得する

// Get active template path from anywhere on Joomla: 
$app    = JFactory::getApplication();
$path   = JURI::base(true).'/templates/'.$app->getTemplate().'/';
5
Cravener