クラフト3:どのようにサイトの動的ベースURLを設定できますか?

サイトのローカライズされたバージョンは、次のように Base URL を使用して設定されます。

— http://{baseUrl}/en/
— http://{baseUrl}/fr/

しかし、 {baseUrl} 変数は、
craft.app.sites.getAllSites()を使用して変換されません。

{% set sites = craft.app.sites.getAllSites() %}
{% for site in sites %}
    {{ site.baseUrl }}
   //→ outputs http://{baseUrl}/locale/ instead of http://mywebsite.com/en/
{% endfor %}

baseUrl はgeneral.phpから設定されます:

'aliases' => array(
    'basePath' => '/mywebsite.com/htdocs/',
    'baseUrl'  => 'http://www.mywebsite.com/'
),
ベストアンサー

クラフトCMS 3 RC7 で、新しい alias()
Twig関数を追加しました。

ですから、あなたの general.php には次のようなことができます:

'aliases' => [
    '@basePath' => getenv('CRAFTENV_BASE_PATH'),
    '@baseUrl' => getenv('CRAFTENV_BASE_URL'),
],

(または何でも/あなたがそれらを設定したい)。これらのエイリアスは、AdminCP内のサイトのBase
URL設定、ボリュームのBase URL設定、およびローカルボリュームのFile System Path設定で使用できます。

そしてあなたのテンプレートでは、次のようなことができます:

{{ alias('@baseUrl') }}
{{ alias('@baseUrl/assets/img/' }}

エイリアスを解決するには私は Craft 3 Multi-Environment
をこのようにエイリアスを活用するように変更しました。 .custom config)、資産ボリュームとエイリアス

同じ方法でCraft 3
Multi-Environmentを使用する必要はありませんが、これは実例であり、参考にするのが便利です。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です