Drupal 8, 9で使用しているテーマのディレクトリをプログラム側で取得
Drupal 8, 9で現在使用しているThemeディレクトリを以下のようにすることでPHP側で取得することができます。
あまりパスをベタ書きするのが個人的によく思えず、プログラム側でいい感じに取得できないか調べてみたところ、ありました。
<?php
// 使用しているテーマ名が custom ディレクトリにある pu10g と仮定して
$themeDir = '/' . \Drupal::theme()->getActiveTheme()->getPath();
echo $themeDir; // /theme/custom/pu10g
使用していないテーマのディレクトリも ThemeHandler
から取得することができます。
<?php
$themeHandler = \Drupal::service('theme_handler');
$themeHandler->getTheme('{theme name}')->getPath();
ThemeHandler | ThemeHandler.php | Drupal 9.0.x | Drupal API
以下は、同じ結果が出力されます。
<?php
$themeHandler = \Drupal::service('theme_handler');
echo '/' . $handler->getTheme($handler->getDefault())->getPath(); // /theme/custom/pu10g
echo '/' . \Drupal::theme()->getActiveTheme()->getPath(); // /theme/custom/pu10g
Category