Drupal 10

Drupal 10

 

Drupal 7 からのアップグレード

Drupal 7での作業

  • Drupal 7 のコアとモジュールを最新にアップデート
  • アップグレードへの可能性を確認 upgrade_status モジュールをインストール
  • Drupal 10へのアップグレードできるモジュールを確認
  • Drupal 7 の ../sites/default/files/  以下のデータをバックアップし、移行するDrupal10の同じディレクトリへコピーする

 

Drupal 10での作業

  • Drupal 10の最新版をインストールし、Drupal 7からDrupal 10へアップグレードできるモジュールをインストールし、そのモジュールを有効にします。
  • Drupal 7 の日本語環境は、英語版でインストールしてから日本語を追加する環境が多いので、languageで英語と日本語になっています。そのデータ構造をDrupal10へインポートする際に、Drupal10側も英語と日本語の環境にします。
  • Drupal 10 コア標準の Migrate、Migrate Drupal、Migrade Drupal UI を有効にします。
  • 追加で、Migrate ToolsMigrate PlusMigrate UpgradeViews migration、モジュールをインストールして有効にします。

Drupal 10コアのUpgradeモジュールを使ってアップグレードする方法は以下のURLで学びます。

https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-...

drushコマンドでDrupal10へのマイグレーションする方法は

https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-...

データベースの定義(settings.phpに追記するサンプル)

$databases['default']['default'] = [
  'database' => 'drupal10',
  'username' => 'drupal10',
  'password' => 'drupal10',
  'prefix' => '',
  'host' => 'database',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
];

$databases['migrate']['default'] = [
  'database' => 'drupal7db',
  'username' => 'drupal7db',
  'password' => 'drupal7db',
  'prefix' => '',
  'host' => 'd7db',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
];

Drupal 10へのマイグレーションのAPI仕様については、 

https://www.drupal.org/docs/drupal-apis/migrate-api

Drupal 10コアの migrade と migrade UI の使い方は、 

https://www.drupal.org/docs/core-modules-and-themes/core-modules/migrate...

 

※Drupal 10 の migrade と migrade UI を使ってマイグレーションをDrupal10管理画面で実行した場合、途中でエラーになります。マイグレーションはdrushコマンドを推奨します。

Preparation steps

  • Make sure that access to the database for the old site is available from this new site.
  • If the old site has private files, a copy of its files directory must also be accessible on the host of this new site.
  • Install all modules on this new site that are enabled on the old site. For example, if the old site uses the Book module, then install the Book module on this new site so that the existing data can be imported to it.
  • Do not add any content to the new site before upgrading. Any existing content is likely to be overwritten by the upgrade process. See the upgrade preparation guide.

このサイトをメンテナンスモードにする。

 

 

Drushコマンドでマイグレーション

Migrate Upgrade モジュールでDrushコマンドを実行します。 概要は以下のURLにて

https://www.drupal.org/docs/upgrading-drupal/upgrading-from-drupal-6-or-...

 

settings.php

  • 最後の行にDrupal 7データベースなどの定義を追加します。
  • 念のために、 update.php を実行できるように設定します。
$databases['migrate']['default'] = array (
  'database' => 'Drupal7データベース名',
  'username' => 'ユーザー名',
  'password' => 'パスワード',
  'prefix' => '',
  'host' => 'd7db',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);

 

マイグレーションの内容を確認

sudo ./vendor/bin/drush migrate:status

sudo ./vendor/bin/drush migrate:import

sudo ./vendor/bin/drush migrate-upgrade
--configure-only  --legacy-db-url=mysql://データベースユーザー名:パスワード@127.0.0.1:3306/Drupal7のデータベース名 --legac
y-root=/var/www/html/Drupalホームディレクトリ

もしくは sudo ./vendor/bin/drush migrate:upgrade --legacy-db-key=migrate --configure-only

また sudo ./vendor/bin/drush migrate-upgrade を実行するとすべてのマイグレーションが実施されます。--configure-only を設定することで構成だけ確認できます。

sudo ./vendor/bin/drush migrate:upgrade --legacy-db-key=migrate --configure-only

マイグレーションの実行

sudo ./vendor/bin/drush migrate-upgrade --legacy-db-url=mysql://データベースユーザー名:パスワード@127.0.0.1:3306/Drupal7のデータベース名 --legacy-root=/var/www/html/work/Drupalホームディレクトリ

もしくは sudo ./vendor/bin/drush migrate:upgrade --legacy-db-key=migrate

 

タグ: 

CMS: 

Theme

デザインテーマ(morethanthemes) 以下内容一部未確認です。
Morethanthemes

Morethanthemesの概要: https://www.morethanthemes.com

FAQ

Elegant

英語がオリジナルなので、日本語を追加後、トップページが表示されないのは、トップページを日本語へ翻訳していないからです。その場合は、トップページのコンテンツ /news-default  もしくはそのノード番号 /node/70 のページを日本語の翻訳を有効にします。

 

データ構造付きデータベースをインポートする場合は英語をメインに

Morethanthemesのデータ構造付きデータベースをインポートする場合は英語をメインにします。Morethanthemesのデータは初期作成時に英語をデフォルト設定で作成されていますので。その後、日本語を追加、英語と日本語をともに翻訳可能にします。言語のデフォルト設定は英語で設定し、コンテンツタイプごとにメインの言語を設定し、日本語がページ作成でデフォルト設定になるように設定します。

初期設定後は、日本語をデフォルト設定にしたコンテンツタイプなどは、日本語環境で運用し、サイト全体や英語がメインのデフォルト設定の作業設定は英語の環境で行うほうが問題が少ないと思います。

ただし、Default Langageが英語の場合、コンテンツタイプで日本語をデフォルト設定にした場合、日本でコンテンツを作成すると、英語に翻訳しないとコンテンツのページが見つからない状態になります。そのコンテンツを英語に翻訳すると日本語と英語で表示されます。この状態は、常にDefault Languageの英語が必要で、日本語と英語をペアでコンテンツ作成する必要があります。

英語版で構築されたデザインテンプレートでデータベース込みで新規インストールの場合は、「Default langauge」は英語のままで、日本語を追加して、英語と日本語の多言語環境として運用し、コンテンツを作成する場合、英語と日本語をともに作成します。ただし、日本語だけ(英語は今は使わない状態)で運用したい場合は、日本語だけで運用するコンテンツタイプをの「Default langauge」「-Not specified-」に設定します。後で、日本語に設定して英語を追加すれば多言語になります。

また、英語が「Default langauge」の場合は、サイトのさまざま環境設定は、英語環境で設定するほうが、多言語の設定が理解しやすいと思います。検証が複雑になる場合があると思いますので。

※Drupal 8/9でのDefault Languageは変更すると問題が発生します。以下のページを参考に

https://www.drupal.org/docs/multilingual-guide/install-a-language

※ Content type -> Language settings -> Default language

  • Site's default language  サイトのデフォルト言語
  • Interface text language selected for pag  ページ用に選択されたインターフェースのテキスト言語
  • Author's preferred language  著者の優先言語
  • English
  • Japanese
  • Not specified(未指定)  指定されていない
  • Not applicable(適用不可)  適用できない

Not specified  指定されていない」で指定すれば、英語がDefault Languageで、コンテンツタイプを「Not specified」で設定すれな、日本語環境でそのコンテンツタイプのコンテンツを新規作成した場合、日本語で表示されます。

先にEnglishなどで言語指定したコンテンツは、あとからNot specifiedに変更することはできません。また、Not specifiedで作成した場合、あとから、日本語や英語に変更は可能です。その場合、多言語サイトの設定に準じるので、設定されている多言語のそれぞれの言語のページがないと表示エラー(Page not found)

 

コンテンツタイプの多言語機能検証(Drupal 9.4.8にて)

以下の動作検証は、コンテンツタイプ -> Language settings -> Default language -> "Show language selector on create and edit pages" および "Enable translation" を有効にしない状態で検証しました。 この2つの機能を有効すると、すべての状態で翻訳が有効になります。

  • Not specified(未指定)  指定されていない で新規作成したコンテンツタイプでの挙動

新規コンテンツ作成(Not specified)で作成 -> 日本語でコンテンツを作成 -> 翻訳できない日本語のコンテンツ

新規コンテンツ作成(Not specified)で作成 -> コンテンツタイプを日本語に変更 -> 日本語でコンテンツタイプ作成(翻訳できない)常に(Not specified)の日本語のコンテンツ

新規コンテンツ作成(Not specified)で作成 -> コンテンツタイプをサイトデフォルト言語に変更 -> 日本語でコンテンツタイプ作成(翻訳できない)常に(Not specified)の日本語のコンテンツ

つまり、コンテンツタイプを新規に作成するときに、Not specified で作成した場合は、変更しても、常に、Not specified になります。多言語設定をするときには、Not specified もしくは Not accpkucable 以外の翻訳できる言語設定します。その後、そのコンテンツタイプをNot specified をデフォルト設定にすれば、例えば、英語がデフォルトでも日本語だけのコンテンツを作成し、将来、日本語・英語にすることが可能になります。

  • Not applicable(適用不可)  適用できない で新規作成したコンテンツタイプでの挙動

新規コンテンツ作成(Not applicable)で作成 -> 日本語でコンテンツを作成 -> 翻訳できない日本語のコンテンツ

新規コンテンツ作成(Not applicable)で作成 -> コンテンツタイプを日本語に変更 -> 日本語でコンテンツタイプ作成(翻訳できない)常に日本語のコンテンツ

 

Drupal 10.3.10 に elegantplus-business-pro 7.0.2 をインストール

初期インストール時に「日本語」を選択しても、事前インポートしたデータベースに接続したあと、その時までのインストール画面は「日本語」でしたが、自動的に「英語」モードに切り替わります。インストール完了後、サイトを表示すると「英語」モードです。ログインし、Langauge設定には、デフォルトの「英語」しかありません。「英語」を選択してインストールした状況と同じでした。

対策:

  • インストールするときは、英語モードでインストールします。Morethantemesのデザインテンプレートのデータベースは「英語」で作成し、コンテンツも「英語」になっています。
  • インストール完了後、言語で「日本語」を追加し、「日本語」をデフォルトに設定。「英語」「英語へのインターフェースの翻訳を有効化」を有効にして翻訳可能にします。
  • 「判定と選択」->「URLによる言語判別」で、英語のパスプレフィックス設定を、en  に設定し、デフォルト言語の日本語はなしに設定。
  • 「ユーザーインタフェースの翻訳」でDrupal10コアの日本語ファイルをインポート。
  • 「コンテンツの言語と翻訳」で必要な機能の言語設定します。「コンテンツ」「タクソノミー」「コンテンツブロック」「カスタムメニューリンク」など。「URLエイリアス」「Paragraph」は翻訳に非対応なので、設定しても機能しないようです。

elegantテーマのトップページを多言語化:

例えば、 Landing Page 12 のLanding Pageをトップページに設定 

  • 「英語」のコンテンツとして設定されているので、「英語」「サイトの基本設定」「フロントページ」に /landing-page-12 と設定されています。「日本語」「サイトの基本設定」「フロントページ」 では、/node/83 と設定されています。
  • この時の「URLエイリアス」では、言語は「英語」、システムPATHは /node/83  URLエイリアスが /landing-page-12 です。
  • 「サイトの基本設定」を翻訳します。「日本語」がデフォルトなので「英語」を追加
  • Landing-page-12 の翻訳は、Morethanthemesのテンプレートなので、「英語」が元言語になっています。「日本語」を追加
  • Landing Page のコンテンツタイプで「コンテンツタイプを翻訳」「フィールドの管理」などで翻訳を有効にします。
  • 「構成の翻訳」「コンテンツタイプ」からLayout Pageのコンテンツタイプで「コンテンツタイプを翻訳」「フィールドの管理」などで翻訳を有効にします。
  • 他のコンテンツタイプも翻訳が必要になるので、「構成の翻訳」「コンテンツタイプ」からいくつかの必要となるコンテンツタイプで、「翻訳」を追加します。「日本語」がデフォルトなので「英語」を追加。

 

Sublime+

Q: デフォルトのスライドショーの写真を変更したい

 A: デフォルトのスライドシューの写真などを変更しても変化がないので、Layputの編集で、追加のスライドショーを追加して、編集します。その後、デフォルトのスライドショーをLayoutの編集で削除します。スライドショーのブロックは、ブロックタイプで定義しているので、そのブロックを修正します。

 

Webmaker

Q: Webmaker 10.3.3 のFull install データをインストールしましたが、PHP Fatal error:  Declaration of Drupal\\flag_anon\\FlagAnonLinkBuilder::build($entity_type_id, $entity_id, $flag_id) must be compatible with Drupal\\flag\\FlagLinkBuilder::build($entity_type_id, $entity_id, $flag_id, $view_mode = null) in.......  のエラーになります。User/login ができません。

 A: デフォルトのFlagモジュール関連で障害になっているようなので、flag  flag_bookmark  flag_count  flag_followee  flag_anon  のモジュールをアンインストールしました。

 

 

 

タグ: 

オープンソースソフトウェア: 

CMS: 

modules

Drupal 10 modules

 

User Management

profileモジュール

 

 

タグ: 

オープンソースソフトウェア: 

CMS: 

Profile

User関連モジュール

 

Profile モジュール

Drupal10のユーザープロファイルを追加管理できます。

概要: https://www.drupal.org/project/profile

 

Profileモジュールのバックアップ

「Profile Type」のフィールドの管理やその他の設定を記録しておきます。再度、Profileモジュールを再インストールした後に、手作業で復元できるようにします。

 

Profileモジュールのバックアップとデータ移行

Drupal10コアのConfigurationモジュールと「Backup and Mygrate」を使う場合の方法

Backup and Mygrateモジュール : https://www.drupal.org/project/backup_migrate

 

Configuration モジュールの設定

「エクスポート」ー>「シングルアイテム」ー>「構成タイプ」ー>「profile type」ー>「構成名」ー>「作成したProfile名」Profile名ごとに作成  ymlファイルとして

「エクスポート」ー>「シングルアイテム」ー>「構成タイプ」ー>「エンティティビューディスプレイ」ー>「構成名」ー>「profile.作成したProfile名」Profile名ごとに作成  ymlファイルとして

「エクスポート」ー>「シングルアイテム」ー>「構成タイプ」ー>「プロフィール(profile)を設定」ー>「構成名」ー>「作成したProfile名」Profile名ごとに作成  ymlファイルとして

 

Backup and Mygrate モジュールの設定

バックアップ設定ファイル「Settings Profile」を作成します。

「Exclude these tables entirely」からProfile関連のテーブルを除外設定します。 profile profile_fieldd_xxxx profile_revision profile_revision_xxxx

「Exclude data from these tables」からProfile関連のテーブルを除外設定します。profile profile_fieldd_xxxx profile_revision profile_revision_xxxx

 

プロフィール(profile)のコンテンツを削除。管理画面のモジュールアンインストールでProfileモジュールを選択して、「プロフィールを削除してください」をクリックして削除します。その後、Profileモジュールをアンインストールします。

 

復元は、Profileモジュールをインストールし、「Profile type」でフィールドなどを復元用に追加設定します。Configurationモジュールで構成をインポートしてから、「Backup and Migration」でバックアップデータを復元します。

 

 

 

 

 

 

タグ: 

CMS: