ノード用テンプレート「node.html.twig」でURLエイリアスに基づいて、テンプレートファイルの命名規則を追加します。
例えば「company」ページの場合「node-company.html.twig」といった命名規則になります。
|
function THEME_NAME_theme_suggestions_node_alter(array &$suggestions, array $variables) { if (\Drupal::routeMatch()->getParameter('node')) { $alias = \Drupal::request()->getPathInfo(); $alias = ltrim($alias, '/'); $alias = ($alias) ? $alias : 'front'; $suggestions[] = 'node__'.str_replace('/', '_', $alias); } } |
上記ではトップページの場合「node-front.html.twig」に、「company/about」ページの場合「node-company-about.html.twig」となるようにしています。
Drupal8でテーマ作成時などに、Twigのキャッシュを無効化する際のメモです。
次の2点のファイルに、それぞれ記述します。
sites/default/settings.php
|
$settings['container_yamls'][] = DRUPAL_ROOT.'/sites/development.services.yml'; $settings['cache']['bins']['render'] = 'cache.backend.memory'; |
sites/development.services.yml
|
cache.backend.memory: class: Drupal\Core\Cache\MemoryBackendFactory parameters: twig.config: debug : true auto_reload: true cache: false |
上記を記述後に「管理 > 環境設定 > パフォーマンス」ページで、一度だけキャッシュをクリアーする必要があります。
Drupal 8からテンプレートエンジンがtwigに変更になりましたので、デザインテーマの作成方法も大きく変わりました。
細かい点ですが「node.html.twig」内で投稿日時を任意のフォーマットに変更する際のメモです。
一番シンプルな方法としては、テンプレート内でフォーマットを指定することができます。
node.html.twig
|
<time class="created">{{ createdtime|date('Y.m.d') }}</time> |
「createdtime」はタイムスタンプですので、「|」を挟んでフォーマットを指定します。
Drupalでは環境設定に日時のフォーマットを登録していて、デフォルトでは「long」「medium」「short」の3種類があります。
この登録済みのフォーマットを指定する場合には「template_preprocess_node」に変数を用意します。
THEMENAME.theme(THEMENAMEは実際のテーマ名になります)
|
function THEMENAME_preprocess_node(&$variables) { $variables['created'] = format_date($variables['node']->getCreatedTime(), 'medium'); } |
「created」という変数(名称は任意で)を設けて、その中に日時のフォーマットを指定した値をいれます。
テンプレート内では次のように記述します。
|
<time class="created">{{ created }}</time> |
後者の方法で日時を指定したほうが、メンテナンス性は高いと思います。
10月1日にDrupal 8のベータ版がリリースされましたので、早速テスト環境にインストールしてみました。
少しさわってみた範囲ですが、Drupal 7からの変更点は次のようなものがあります。
- Symfonyのコンポーネントをコアに組み込み
- SymfonyフレームワークのいくつかのコンポーネントがDrupalコアに組み込まれました。
サイト構築の際に直接影響が出そうなのは、デザインテーマの作成でしょうか。テンプレートエンジンが「Twig」に変更になったので既存テーマに関しては作り替えが必要です。
- Viewsモジュールをコアに組み込み
- Drupalでは必須と言えるViewsモジュールがコアに組み込まれました。使用感としてはDrupal 7の時のView 3とあまり変わりません。
コアに組み込まれたことにより、管理ページの一部もViewsで生成されています。
- スマートフォン、タブレットへの対応
- 標準でレスポンシブデザインを採用されていますので、管理メニューが画面サイズによって変化するようになりました。
デフォルトテーマの「Bartik」も、レスポンシブデザイン仕様になっています。
- CKEditorをコアに組み込み
- 記事作成の際のエディタにCKEditorが組み込まれました。
- インストールが簡単に
- 日本語を含む多言語のインストールがより簡単になりました。あらかじめ「.po」ファイルを用意する必要はなくなりました。
管理メニューを含むフロントページはDrupal 7から大きな変化はないようです。
記事作成の際に標準でCKEditorが使えるようになりました。
Drupal 7から引き続き「Bartik」が標準テーマです。レスポンシブデザイン仕様になっています。
コアに組み込まれたViewsは、Drupal 7の時と同様に便利です。
Drupal 8もベータ版になり、正式版のリリースまでもう少しになりました。
コアにSymfonyのコンポーネントが組み込まれたということで、内部的には大きな変化があったと思います。
Symfony自体は使っていないのですが、同じくSymfonyをベースにしたLaravelを最近使うようになったので、興味深いところもあります。
アルファ版が長かったことを考えると、正式版が出るまでにはかなりの時間を要するかもしれませんが、今後が非常に楽しみです。