メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • Drupal8:(Syntax Highlighterで)ハイライトされたテキストの改行タグ(<br>)が自動的に追加された対応

Drupal8:(Syntax Highlighterで)ハイライトされたテキストの改行タグ(<br>)が自動的に追加された対応

drupal
field
ckeditor

SyntaxHighlighter導入後にハイライトされたテキストに改行タグ(<br>)が自動的に追加されました

  • Drupal バージョン:8.6.x
  • Drupal8では、CKEditorがコアーに入ています。インストールする必要はありません。
  • モジュール:Syntax Highlighter導入します
  • Syntax Highlighter設定を変えずに、ハイライトされたテキストに改行タグ(<br>)が自動的に追加されました
    Syntax Highlighterされたテキストに改行タグ(<br>)が追加された

原因:テキスト関連のフィルター設定にある「改行をHTMLに「変換」

  • よく調べたが、原因はテキスト関連の設定にあります
  • ホーム » 管理 » 環境設定 » コンテンツ作成 » Text formats and editors でのテキスト関連設定画面にある「有効なフィルター」を確認します
    • 「改行をHTMLに変換(たとえば、<br> や <p>などに)」項目がチェックされたかを確認します
      改行に関してテキスト関連設定
    • もし、チェックされた場合に、この項目のチェックを外します
  • 上記項目のチェックを外したら、テキストの表示が正常に戻ります
drupal
javascript
ckeditor
syntax highlighter

問題点:

  • サイトのテーマを変更して、いつの間にかにSyntax Hightlighterのソースコード表示が乱れています。入力したソースコードが単語単位で改行されてしまいまして、ソースコードが全然まともに表示されていないです。

原因

  • いろいろチェックしたところで、Syntax Hightlighterのあるタグ「code」がほかのcssに定義されてソースコードの表示が乱れてしまったことを分かりました。

解決方法

  • 上記codeタグのstyleを再定義します
  • サイトのcssファイル(style.css)に一行を追加します:
    .syntaxhighlighter code{
        display: inline !important;
    }

 

drupal
syntax highlighter
wyusiwyg
ckeditor

Drupal8ではckEditorモジュールがコアーに入っている

  • Drupal7ではリッチテキストエディターを必要な時に、WYSISWYGモジュールか、ckEditorモジュールなどをインストールする必要があります
  • Drupal8ではckEditorモジュールがコアーに入っているので、インストールする必要はありません
    • ckEditoのプラグイン、ボタンを追加するには、Drupal7と比べると、ちょっと面倒な作業があるようです

ckEditoにソースコード・ハイライト(syntaxhighlight)プラグインをインストールします

  • ckEditoのソースコード・ハイライト(syntaxhighlight)モジュール:CKEditor Syntax Highlighter
  • モジュール(CKEditor Syntax Highlighter)が三つの部分を依存しています
    • CKEditor Syntax Highlight plugin
    • Drupal Libraries module
    • Drupal Syntax Highlighter module
  • モジュール(Drupal Syntax Highlighter module)を通常にインストールします
    • syntaxhighlighterの本家からjsライブラリをダウンロードします
    • jsライブラリ(syntaxhighlighter)をdrupal/libraries/syntaxhighlighterに展開します
      • shCore.js がdrupal/libraries/syntaxhighlighter/scriptにあることを確認します
  • 通常のインストール方法でモジュール(Libraries)をインストールし、有効化します
  • プラグイン(CKEditor Syntax Highlight plugin)をgitHubからダウンロードします
    • ダウンロードされたプラグインをdrupal/libraries/ckeditor_syntaxhighlightの配下に配置します
    • プラグイン(plugins)ディレクトリはdrupal/libraries/ckeditor_syntaxhighlightの下にあることを確認します
      ckeditor_syntaxhighlightプラグイン
    • このプラグインのインストール方法はあまり詳細に説明されていなくて、戸惑うことが多いでしょう。
drupal
module
taxonomy
field

タクソノミー・タームの選択ツールについて

  • 記事編集画面でタクソノミー・ターム(例:タグ)などの初期選択ツールが自動補完/セレクトボックスなどがあります
  • Drupal7では:Hierarchical Select モジュールをよく使用しました。
    • とてもシンプルとは言えないですが、使いやすいモジュールでした
    • 選択だけではなく、新規タームの作成もできました
  • Drupal8では: Hierachical SelectモジュールはDrupal8のバージョンを提供していない
    • Drupal8では、Simple Hierarchical Select, Chosen などのモジュールがあります
    • 階層別で選択では、Simple Hierachical Selectでは十分機能しています
    • Chosenはサードパーティーのモジュールで、jsライブラリのダウンロード/インストールが必要です

モジュール(Simple Hierachical Select)が使いやすいが問題があり

  • 現時点では、Simple Hierachical Selectモジュールのバージョン:8.x-1.0-alpha4
  • モジュールを通常にインストールして、設定画面で、新規ターム作成許可のチェックボックスが無効化されています
    新規ターム作成チェックボックスが無効されている
  • この点をインターネットで調べてみたら、実際に解決されていない問題があります
    • 詳細説明ページ:https://www.drupal.org/project/shs/issues/2712115
    • パッチ幾つかが提供されていますが、根本的な対応策が見つかっていないようです
    • でも、ターム新規作成をしなければ、このモジュールが十分使えます
drupal
module
system_management

Drupal7と比較すると、Drupal8のノード(node)のデータテーブルこう構造が変わった

  • Drupal7ではノード(node)テーブルがタイトルが含まれています
    • タイトル、編集ユーザーなどがあります
  • Drupal8ではノード(node)テーブルがタイトルなどが含まないです
    • 単にノードID(nid)、リビジョンID(vid)のみの識別情報となります

Drupal8のリビジョン管理がnode_revisionテーブルで行います

  • ノード単位のリビジョンがnode、node_revisionテーブルで行います
    Drupal8ノードリビジョン管理
  • nodeテーブルでは、単にnid、vid、typeの管理
  • node_revisionテーブルでは、nid、vidのみでリビジョンを管理しています
drupal
system_management
configuration

Drupal8をインストール後にサイト状態(Site Status)ではエラーがあります

  • Drupal8をインストールして、ホーム >> 管理 >> レポート >> サイトの状態 を確認すると、以下のエラーがあります
    TRUSTED HOST SETTINGS無効
    
    The trusted_host_patterns setting is not configured in settings.php. 
    This can lead to security vulnerabilities. It is highly recommended 
    that you configure this. See Protecting against HTTP HOST Header 
    attacks for more information.

    Trust Host Seetingエラー
  • このエラーの原因はサイトの設定ファイルで「TRUSTED HOST SETTINGS」を定義していないからです

Drupal8のホストのなりすまし攻撃(Host Header Spoofing)防止のため信用ホストを登録する

  • ホストのなりすまし攻撃(Host Header Spoofing)が最近よく見られてきました
  • Drupal8では「symfony trusted host mechanism」の仕組みを利用して信用ホストを登録して、攻撃を防衛します
  • 登録場所はサイトの設定ファイル(drupal/sites/[site-name]/settings.php)で行います

サイトの設定ファイルで信用ホスト名を登録します

  • サイト単位の設定ファイル(drupal/sites/[site-name]/settings.php)を開くと、687行あたりで、信用ホスト登録の説明、サンプルがあります
  • 信用ホスト登録例をコピーして、開発環境、実際に利用するホスト名を正規表現で登録します
      $settings['trusted_host_patterns'] = array(
        '^localhost$',
        '^www.\your-host\.jp$',
      );

     

drupal
module usage

やりたいこと:Drupalのコンテンツタイプ定義を出力して別のサイトにインポートします

  • 背景:Drupal8.3.2
  • Drupal8のコンテンツタイプの定義をCMI(Configuration Managementモジュール、Drupal8のコアーにある)でエクスポートします(ほかのサイトにインポートのため)。
    • シングルタイプのエクスポート: ホーム >> 管理 >> 環境設定 >> 開発 >> 同期 >> エクスポート >> シングルアイテム で行います
    • 構成タイプ:コンテンツタイプ
    • 設定名:エクスポートしたいコンテンツタイプ名を選択します
  • エクスポートされたコンテンツタイプの定義を見てみると、フィールドの情報がありませんでした。
    Drupal8のコンテンツタイプをCMIでエクスポート時にフィールド情報がありません

Durpal8のCMIがコンテンツタイプとコンテンツフィールドが別物として扱われているため、コンテンツタイプとフィールドを一緒にエクスポートはできません

  • CMIの構成タイプを見てみると、「フィールドのストレージ」項目がありまして、これはすべてのコンテンツタイプのフィールドを纏めて表示されています
  • CMIはコンテンツタイプがフィールドと関連付けていないようで、別物として扱っています
  • フィールドの情報をエクスポートしたい場合、一つ一つ個別でエクスポートする必要があるようです

コンテンツタイプをフィールドと一緒にエクスポートしたい場合にモジュール(Feature)を利用します

  • モジュール(Feature)を利用してコンテンツタイプをフィールド情報と一緒にエクスポートすることができます
  • モジュールインストール方法で出力っされたコンテンツタイプをインストールすればそのコンテンツタイプの復元ができます
drupal
module
system_management

Drupal7と比較すると、Drupal8のノード(node)のデータテーブルこう構造が変わった

  • Drupal7ではノード(node)テーブルがタイトルが含まれています
    • タイトル、編集ユーザーなどがあります
  • Drupal8ではノード(node)テーブルがタイトルなどが含まないです
    • 単にノードID(nid)、リビジョンID(vid)のみの識別情報となります

Drupal8のリビジョン管理がnode_revisionテーブルで行います

  • ノード単位のリビジョンがnode、node_revisionテーブルで行います
    Drupal8ノードリビジョン管理
  • nodeテーブルでは、単にnid、vid、typeの管理
  • node_revisionテーブルでは、nid、vidのみでリビジョンを管理しています
drupal
module
taxonomy
field

タクソノミー・タームの選択ツールについて

  • 記事編集画面でタクソノミー・ターム(例:タグ)などの初期選択ツールが自動補完/セレクトボックスなどがあります
  • Drupal7では:Hierarchical Select モジュールをよく使用しました。
    • とてもシンプルとは言えないですが、使いやすいモジュールでした
    • 選択だけではなく、新規タームの作成もできました
  • Drupal8では: Hierachical SelectモジュールはDrupal8のバージョンを提供していない
    • Drupal8では、Simple Hierarchical Select, Chosen などのモジュールがあります
    • 階層別で選択では、Simple Hierachical Selectでは十分機能しています
    • Chosenはサードパーティーのモジュールで、jsライブラリのダウンロード/インストールが必要です

モジュール(Simple Hierachical Select)が使いやすいが問題があり

  • 現時点では、Simple Hierachical Selectモジュールのバージョン:8.x-1.0-alpha4
  • モジュールを通常にインストールして、設定画面で、新規ターム作成許可のチェックボックスが無効化されています
    新規ターム作成チェックボックスが無効されている
  • この点をインターネットで調べてみたら、実際に解決されていない問題があります
    • 詳細説明ページ:https://www.drupal.org/project/shs/issues/2712115
    • パッチ幾つかが提供されていますが、根本的な対応策が見つかっていないようです
    • でも、ターム新規作成をしなければ、このモジュールが十分使えます
drupal
module
system_management

Drupal7と比較すると、Drupal8のノード(node)のデータテーブルこう構造が変わった

  • Drupal7ではノード(node)テーブルがタイトルが含まれています
    • タイトル、編集ユーザーなどがあります
  • Drupal8ではノード(node)テーブルがタイトルなどが含まないです
    • 単にノードID(nid)、リビジョンID(vid)のみの識別情報となります

Drupal8のリビジョン管理がnode_revisionテーブルで行います

  • ノード単位のリビジョンがnode、node_revisionテーブルで行います
    Drupal8ノードリビジョン管理
  • nodeテーブルでは、単にnid、vid、typeの管理
  • node_revisionテーブルでは、nid、vidのみでリビジョンを管理しています
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)