ノード用テンプレート「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でサイトを構築する際に、SEO対策として導入すると効果のあるモジュールを紹介します。
- Pathauto
- コアモジュールの「Path」でノードごとにURLエイリアスを付けることができますが、「Pathauto」ではURLエイリアスの命名をパターン化して、自動で付けることができます。
- Global Redirect
- 各ノードにURLエイリアスを付けた際でも、もともとの「/node/1」のURLでもアクセスできてしまいますが、このモジュールでは強制的にURLエイリアスに転送してくれます。
- Page title
- コンテンツのタイトルとは別に、head内のタイトルを設定することができます。コンテンツタイプごとにパターンを設定することもできます。
- Metatag
- 各ページのDescriptionなどのMetaタグを詳細に設定することができます。SNS向けのOGPにも対応しています。
- Menu attributes
- サイト内のメニュー項目に対して、Nameなどの属性を追加することができます。ID、Classも付加できますので、CSSでデザインする場合にも有効です。
- XML sitemap
- 検索エンジンのクローラー向けに、XMLサイトマップを自動生成してくれます。コンテンツタイプや、個別ノードごとに含めるかどうかの設定もできます。
Drupal 7で「page.tpl.php」などのテンプレート内でリダイレクト処理のメモです。
カレントユーザーがログインしていない場合には、次のような記述でログインページにリダイレクトできます。
|
<?php if (!$logged_in) { drupal_goto('user/login', array('query' => array('destination' => 'home'))); } ?> |
パラメータの「destination」にURLを入れることで、ログイン後に該当ページへ移動することもできます。
CKEditorの編集画面で画像を挿入すると、デフォルトでは画像のサイズをStyle属性にて指定されます。
|
<img src="image/jpg" style="width:100px; height:100px;"> |
通常の使用では特に影響はありませんが、レスポンシブデザインの場合、画面サイズに合わせて画像が縮小表示するように、CSSで次のように記述することがあります。
|
img { max-width: 100%; height: auto; } |
ですがStyle属性でサイズを指定してある場合そちらの方が優先されますので、CSSの設定では期待通りに画像を表示することができません。
CKEditorで編集の際にStyle属性ではなく、従来のwidth、height属性で画像サイズを指定するには、CKEditorの「Enhanced Image」というプラグインをインストールすることで実現することができます。
このプラグインを有効にするためには、次の依存するプラグインも併せてインストールする必要があります。
「Dialog」「Clipboard」については標準で入っていますので、残りの2つを「ckeditor/plugins」ディレクトリに入れます。
その上で設定ファイル「ckeditor/config.js」内に次の一行を追加します。
|
config.extraPlugins = 'widget,lineutils,image2'; |
DrupalでCKEditorを利用している場合、環境設定のCKEditorの設定にある「高度なオプション」に上記を記述することもできます。