ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
さくらレンタルサーバ上のDrupalを更新する

さくらレンタルサーバ上のDrupalを更新する

概要 さくらレンタルサーバ上のDrupalを更新する機会がありましたので、手順のメモです。 まず、以下のサイトを参考にしました。 https://www.drupal.org/docs/updating-drupal/updating-drupal-core-via-drush ただし、以下のような記載がありました。 Use Composer to manage Drupal dependencies. Drush 9 and newer no longer supports updating Drupal. そこで、以下も参考にさせていただきました。 https://drupalfan.com/drupal10を最新版にアップデートする/ 手順 ! 間違った手順や不要な手順が含まれているかもしれませんので、参考程度ご確認ください。 Drupalをダウンロードしたディレクトリに移動 cd ~/www/{project_name} 準備(インストール済みの場合は不要) composer composer.pharというファイルしかない場合、composerを作成する。(mvでもよいかと思います。) cp composer.phar composer drush composer require --dev drush/drush メンテナンスモードの有効化 ./vendor/bin/drush state-set system.maintenance_mode 1 キャッシュのクリア ./vendor/bin/drush cr バックアップ バックアップ用のディレクトリの作成 mkdir ~/bk sqlのバックアップ ./vendor/bin/drush sql:dump --extra-dump=--no-tablespaces > ~/bk/dump.sql 参考 以下のように、--extra-dump=--no-tablespacesを指定しないと、エラーがメッセージが表示されました。 ./vendor/bin/drush sql:dump > ~/bk/dump.sql > mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces ファイルのバックアップ tar cvzf ~/bk/web.zip . 更新 事前確認 composer update "drupal/core-*" --with-all-dependencies --dry-run 更新 composer update "drupal/core-*" --with-all-dependencies コントリビュートモジュールのアップデート composer update データベースの更新 ./vendor/bin/drush updatedb メンテナンスモードの無効化 ./vendor/bin/drush state-set system.maintenance_mode 0 キャッシュのクリア ./vendor/bin/drush cr 更新後にキャッシュのクリアを行わないと、表示が崩れることがありました。 ...

Drupalモジュール開発: 異体字を考慮した検索を行う

Drupalモジュール開発: 異体字を考慮した検索を行う

概要 Drupalを用いたシステム開発にあたり、異体字を考慮した検索を行う必要がありましたので、それを実現するためのカスタムモジュールを作成しました。(すでに同様のことを行うことができるモジュールがあるかもしれませんが、私のほうでは見つけることができませんでした。) 以下のリポジトリで公開しています。 https://github.com/nakamura196/Drupal-module-itaiji 使い方 設定 /admin/configにアクセスして、検索とメタデータの項目にあるItaijiのリンクをクリックします。 Conversion Rulesというフォームに、original1, original2 => convertedのような形式で変換ルールを入力します。 検索API search_apiモジュールを使って作成したインデックスのプロセッサーにアクセスします。 /admin/config/search/search-api/index/{INDEX_NAME}/processors Itaijiという項目を有効化します。 上記により、インデックス登録およびクエリの前処理として、変換ルールに基づいた変換が行われ、異体字を考慮した検索を行うことが可能になります。 注意点とまとめ Search APIのBackendとして、データベースを選択した場合でのみ、動作確認を行なっています。また、Drupalに関する開発経験が乏しいため、他の不具合を多々見られるかと思います。ご利用にあたっては、十分にご注意ください。 DrupalのSearch APIを使った検索システムの開発にあたり、参考になりましたら幸いです。

drushのコマンドの備忘録

drushのコマンドの備忘録

概要 Drupalのモジュールの開発において、使用頻度が高かったコマンドのメモです。 キャッシュのクリア drush cr 翻訳ファイルのインポート 以下は、itaijiというモジュールの日本語ファイルをインポートしている例です。 drush locale:import ja /app/web/modules/custom/Drupal-module-itaiji/translations/itaiji.ja.po モジュールの再インストール drush pm-uninstall itaiji && drush en itaiji

DrupalでJSON:API Search APIを使用する際のページネーションエラー

DrupalでJSON:API Search APIを使用する際のページネーションエラー

DrupalでJSON:API Search APIを使用していた際、page[limit]などをクエリパラメータを追加した際にエラーが発生しました。 https://www.drupal.org/project/jsonapi_search_api 具体的には、以下のエラーメッセージが表示されました。 Input value “page” contains a non-scalar value. 調べてみたところ、これは以下のIssuesでも言及されていました。 https://www.drupal.org/project/jsonapi_search_api/issues/3403107 Development version(開発版)の8.x-1.x-devでは修正済みということで、以下に差し替えました。 https://www.drupal.org/project/jsonapi_search_api/releases/8.x-1.x-dev 結果、エラーが解消しました。 開発版のモジュールを使用するか要検討ですが、同様の不具合でお困りの方の参考になりましたら幸いです。

Drupal: Feeds Tamperモジュールを使った複数の値の登録とスキップ処理

Drupal: Feeds Tamperモジュールを使った複数の値の登録とスキップ処理

概要 DrupalのFeedsモジュールを使って、以下のようなCSVの登録を試みました。 id title target xxx あああ 9600023 このように、一つのフィールドに複数の値を登録したい場合には、Feeds Tamperモジュールが使用できました。 https://www.drupal.org/project/feeds_tamper 以下の記事が参考になりました。 https://acret.jp/drupal/articles/456 以下のように設定することで、複数の値を一括登録できました。 ただし、以下のように、target列が空の行を含む場合、 id title target xxx あああ 以下に示すエラーが発生しました。 ResponseText: The website encountered an unexpected error. Please try again later.Drupal\tamper\Exception\TamperException: Input should be a string. in Drupal\tamper\Plugin\Tamper\Explode->tamper() (line 72 of /bitnami/drupal/modules/contrib/tamper/src/Plugin/Tamper/Explode.php). 対処法 以下のように、「Skip tampers」を選択しました。 さらに、「Skip tampers」を「Explode」の前に移動します。 結果、空の文字列が含まれていても、エラーを回避できました。 まとめ 同様のことでお困りの方の参考になりましたら幸いです。

Drupal: UUIDを表示する

Drupal: UUIDを表示する

概要 以下のように、コンテンツのUUIDを表示する方法の備忘録です。 モジュールのインストール 以下のモジュールを使用しました。 https://www.drupal.org/project/uuid_extra 使い方 UUIDを表示したいコンテンツタイプの「Manage display」タブを選択し、以下のように、UUIDを移動させます。 まとめ 参考になりましたら幸いです。

Drupalでフィールドの値を選択式にする

Drupalでフィールドの値を選択式にする

目的 以下のように、フィールドの値の入力方法を選択式にする方法について説明します。 以下、テキストの場合と、エンティティ参照の場合のそれぞれについて説明します。 テキストの場合 ageというフィールドを作成します。ここで「リスト(テキスト)」を選択します。 以下のように選択肢を入力します。 結果、以下のように、「選択リスト」形式でフィールドを編集できるようになります。 さらに、コンテンツタイプの一覧ページから、「フォームの表示管理」を押します。 /admin/structure/types そしてageフィールドのウィジェットを「チェックボックス/ラジオボタン」に変更してみます。 結果、以下のようにフォームが変化します。 エンティティ参照 エンティティ参照の場合も上記と同様です。例えば、以下の記事で作成したフィールドを対象にします。 「フォームの表示管理」から、ウィジェットを「チェックボックス/ラジオボタン」に変更します。すると、以下のように、フォームが変化します。 まとめ フォームの表示管理について、参考になりましたら幸いです。 参考 Drupal で値を管理する際にテキストのリスト形式を選択するか、Vocabulary (タクソノミー) を使うか、について問い合わせてみました。こちらも参考になりましたら幸いです。 GPT-4による回答 Drupal で値を管理する際にテキストのリスト形式を選択するか、Vocabulary (タクソノミー) を使うかは、実際の使用シナリオや要件によって変わります。以下は、それぞれの選択肢の特徴と利点、制限点を示しています。 テキストのリスト形式 利点: シンプルで簡単にセットアップできる。 小さな固定のリストに適している。 選択リストやチェックボックスなどの形式で簡単に表示できる。 制限点: 項目間の関係や階層構造を持たせることができない。 リストが大きくなると管理が難しくなる可能性がある。 Vocabulary (タクソノミー) 利点: 項目間の関係や階層構造を持たせることができる。 項目にメタデータや説明、関連画像などを追加できる。 大量の項目や動的に変わる項目を管理するのに適している。 拡張機能やモジュールとの統合が豊富。 制限点: セットアップや管理がテキストのリスト形式よりも複雑になる可能性がある。 どちらを選ぶべきか? リストのサイズと変動性 : 小さく、あまり変わらないリストの場合はテキストのリスト形式が適しています。一方、大きい、または頻繁に変わるリストの場合は、Vocabulary の方が適しています。 関連データの必要性 : 項目に追加の情報や属性が必要な場合、Vocabulary の使用が推奨されます。 階層性や関連性 : カテゴリのように項目間に階層や関連性が必要な場合、Vocabulary が適しています。 シンプルさ : 簡単にセットアップし、シンプルに保ちたい場合は、テキストのリスト形式が良いでしょう。 最終的には、プロジェクトの要件や将来の拡張性を考慮して、最適な選択を行うことが重要です。

Drupalで他のコンテンツを参照する際に、IDとタイトルで探せるようにする

Drupalで他のコンテンツを参照する際に、IDとタイトルで探せるようにする

はじめに 例えば、Drupalで「組織」というコンテンツタイプを作成し、「東京大学」「京都大学」というコンテンツを作成します。 この時、Research Organization Registry (ROR)を使用して、以下のIDも登録したとします。 タイトル ID 東京大学 057zh3y96 京都大学 02kpeqv85 このコンテンツを他のコンテンツ(例えば、「研究者」コンテンツタイプ)からaffiliationフィールドを使って参照してみます。この時、以下のように大学と入力すると、登録済みの2件のコンテンツが表示されます。 一方、IDの一部である057などを入力しても、登録済みのコンテンツが表示されません。 そこで、本記事では、タイトルに加えて、他のフィールドでもコンテンツを探せるようにすることを目指します。 方法 ビューの作成 Drupalにログイン後、以下のURLにアクセスし、ビューを追加します。 /admin/structure/views/add ここでは、ビューの基本情報として、「組織」「organization」を与え、ビューの設定として、コンテンツのタイプを「組織」に限定しています。 次の画面に遷移後、まず以下のように「+追加」ボタンを押し、「エンティティ参照」を選択します。 以下のように、メッセージが表示されます。 ディスプレイ “エンティティ参照” が正しく動作するには、選択した検索フィールドが必要です。エンティティ参照リストのフォーマット設定を確認してください。 このメッセージに対応するには、フォーマット > フォーマット > 設定を押して、以下のように、検索フィールドにチェックを入れる必要がありました。 この結果、以下のように、タイトルが表示されます。 IDフィールドの追加 次に、IDフィールドを追加します。 フィールド > 追加 から、追加したいフィールド(ここではID)を追加します。 次に、フォーマット > フォーマット > 設定から、IDにもチェックを入れます。 結果、以下のように、タイトルとIDのペアで表示されるようになりました。 フィールド > 並び替え で順番を入れ替えてみます。 結果、以下のように、IDが先頭にくるようになりました。 IDの場合、昇順で並べるケースが考えられるため、ここでも並び順を変更してみます。具体的には、並び替え基準でIDフィールドを追加して、昇順にします。 また、デフォルトで登録済みであったコンテンツ: 投稿日時を削除します。 結果、以下のように、IDの昇順でエンティティ参照が並ぶようになりました。(ここでは、画面上は変化がありません。) そして「保存」ボタンを押して、設定を保存します。 フィールド管理への反映 作成したビューをフィールド管理に反映してみます。まず、以下のコンテンツタイプの一覧ページにアクセスします。 ...

Drupal: APIを用いた`uid`フィールド更新時のエラー対応

Drupal: APIを用いた`uid`フィールド更新時のエラー対応

DrupalのJSONAPIを用いてnodeのuidフィールドを更新しようとした際、以下のエラーが発生しました。 The current user is not allowed to PATCH the selected field (uid). The 'administer nodes' permission is required. これについて、権限を変更することで解決できました。 具体的には、NodeのAdminister contentにチェックをいれることで、解決できました。 ただし、以下のような記載がありましたので、利用にあたっては注意が必要かと思います。 Warning: Give to trusted roles only; this permission has security implications. Promote, change ownership, edit revisions, and perform other tasks across all content types. 参考になりましたら幸いです。

Some resources have been omitted because of insufficient autho... への対応

Some resources have been omitted because of insufficient autho... への対応

DrupalのJSONAPIの利用において、以下のようなクエリで、fieldのIDから、field_nameを取得しようとしたところ、結果が0件になりました。 https://xxx/jsonapi/field_config/field_config?fields[field_config–field_config]=label%2Cfield_name&filter[name-filter][condition][path]=field_name&filter[name-filter][condition][operator]=IN&filter[name-filter][condition][value][1]=field_xxx1&filter[name-filter][condition][value][2]=field_xxx2&filter[name-filter][condition][value][3]=field_xxx3&filter[bundle]=yyy 返却された結果のmetaの項目に、権限の問題が記載されていました。 { "jsonapi": { "version": "1.0", "meta": { "links": { "self": { "href": "http://jsonapi.org/format/1.0/" } } } }, "data": [], "meta": { "omitted": { "detail": "Some resources have been omitted because of insufficient authorization.", ... } }, ... } そこで、以下の図にある通り、Field UIのコンテンツ: フィールドの管理の権限を変更したところ、上記の権限の問題を解決することができました。 ただし、以下のような記載があるため、ご利用の際は十分に注意してください。 警告: 信頼できる役割のみに与えてください。この権限はセキュリティへの影響があります。

Landoで構築したDrupalにdrushをインストールする

Landoで構築したDrupalにdrushをインストールする

以下のサイトを参考に、Landoを使ってDrupalの開発環境を用意しました。 https://www.acquia.com/jp/blog/how-to-use-lando-for-building-drupal-local-environment そこにdrushをインストールするにあたり、以下が参考になりました。 https://docs.lando.dev/drupal/getting-started.html#quick-start 以下を実行することで、drushが使えるようになりました。 # Install a site local drush lando composer require drush/drush 他の方の参考になりましたら幸いです。

Drupal 10.1.0以降でTwigのキャッシュを無効化する方法

Drupal 10.1.0以降でTwigのキャッシュを無効化する方法

以下に記載がありました。 https://www.drupal.org/docs/develop/development-tools/disable-caching#s-disabling-twig-caching-the-easy-way 以下にアクセスします。 /admin/config/development/settings 以下の画面でチェックを入れることで、キャッシュを無効化できました。 他の方の参考になりましたら幸いです。

DrupalのViewsでURLで参照する画像を表示する

DrupalのViewsでURLで参照する画像を表示する

背景 次のように、Field typeをLinkとしたthumbnailというフィールドに画像のURLを入力する場合を想定します。 今回、いらすとやさんの以下の画像を利用させていただきます。 https://3.bp.blogspot.com/-HLe8mKu9lCs/Ugsu_AAFifI/AAAAAAAAXNI/-yW12EVgQ5s/s800/book_yoko.png このようなデータを、以下のようなViewsで表示するための備忘録です。 Views ViewsのRewrite resultsで以下のように設定しました。 <img src="{{ field_thumbnail__uri }}" alt="Image" /> Field typeをLinkとした場合、以下のようなReplacement patternsが必要なようでした。 {{ field_thumbnail }} == thumbnail {{ field_thumbnail__uri }} == Raw uri {{ field_thumbnail__title }} == Raw title {{ field_thumbnail__options }} == Raw options まとめ 当初、{{ field_thumbnail }}を指定したところ画像が表示されず、困っていました。 参考になりましたら幸いです。

DrupalでOpenAPIを有効にする

DrupalでOpenAPIを有効にする

概要 DrupalでOpenAPIを有効にする機会がありましたので、その備忘録です。なお、以下のjson:apiモジュールを有効化済みです。 モジュールのインストール 以下の2つのモジュールをインストールします。 https://www.drupal.org/project/openapi https://www.drupal.org/project/openapi_jsonapi 結果、以下のURLで、jsonを取得することができます。 /openapi/jsonapi 以下にアクセスすると、「No UI …」と表示されます。次に、UIを追加してみます。 /admin/config/services/openapi UIの追加 以下の2つのモジュールをインストールします。 https://www.drupal.org/project/openapi_ui https://www.drupal.org/project/openapi_ui_redoc 結果、「Explore」のボタンが表示されます。 ボタンをクリックすると、以下の画面に遷移します。 /admin/config/services/openapi/redoc/jsonapi Swagger UIライクな画面が表示されます。 なお、Redocは、以下のように説明されていました。 Redoc is an open-source tool for generating documentation from OpenAPI (fka Swagger) definitions. https://github.com/Redocly/redoc 参考 以下の「Swagger UI for OpenAPI UI」についてもインストールしてみましたが、私の環境ではエラーが出てしまいました。 https://www.drupal.org/project/openapi_ui_swagger まとめ DrupalでOpenAPIを利用される際の参考になりましたら幸いです。

DrupalのJSON:APIにおけるcorsエラーへの対応

DrupalのJSON:APIにおけるcorsエラーへの対応

概要 DrupalのJSON:APIによる出力結果を別のアプリから利用した際、corsエラーが発生しました。ここでは、corsエラーの改善方法について説明します。 対応 以下のファイルをコピーします。 /web/sites/default/default.services.yml cp /web/sites/default/default.services.yml /web/sites/default/services.yml そして、cors.configのenabledをtrueにします。 # Configure Cross-Site HTTP requests (CORS). # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS # for more information about the topic in general. # Note: By default the configuration is disabled. cors.config: enabled: false # ここ! # Specify allowed headers, like 'x-allowed-header'. allowedHeaders: [] この結果、corsエラーを解消することができました。 まとめ 同様のことでお困りの方の参考になりましたら幸いです。

JSON:API関連のエラーへの対処方法

JSON:API関連のエラーへの対処方法

概要 JSON:API関連の以下のエラーが発生しました。このエラーに対する対処方法の備忘録です。 サイトに予期せぬエラーが起こりました。しばらくたってから再度お試しください。 TypeError: Drupal\jsonapi_search_api_facets\Plugin\facets\facet_source\JsonApiFacets::__construct(): Argument #6 ($index) must be of type Drupal\search_api\IndexInterface, null given, called in /home/j-soken/drupal/web/modules/contrib/jsonapi_search_api/modules/jsonapi_search_api_facets/src/Plugin/facets/facet_source/JsonApiFacets.php on line 61 in Drupal\jsonapi_search_api_facets\Plugin\facets\facet_source\JsonApiFacets->__construct() (line 48 of modules/contrib/jsonapi_search_api/modules/jsonapi_search_api_facets/src/Plugin/facets/facet_source/JsonApiFacets.php). Drupal\jsonapi_search_api_facets\Plugin\facets\facet_source\JsonApiFacets::create() (Line: 21) Drupal\Core\Plugin\Factory\ContainerFactory->createInstance() (Line: 83) Drupal\Component\Plugin\PluginManagerBase->createInstance() (Line: 251) facets_system_breadcrumb_alter() (Line: 545) Drupal\Core\Extension\ModuleHandler->alter() (Line: 94) Drupal\Core\Breadcrumb\BreadcrumbManager->build() (Line: 72) Drupal\system\Plugin\Block\SystemBreadcrumbBlock->build() (Line: 171) Drupal\block\BlockViewBuilder::preRender() call_user_func_array() (Line: 101) ... 対処方法 まず、エラーの表示を有効にします。以下のファイルに追記します。 $config['system.logging']['error_level'] = 'verbose'; jsonapi関連で使用していたモジュールをdrushでアンインストールし、再度インストールすることで解決しました。 drush pm:uninstall drupal/search_api drupal/facets drupal/jsonapi_search_api drupal/jsonapi_search_api_facets なお、上記をさくらのレンタルサーバで実行するにあたり、drushのインストールが必要でした。以下のページを参考に、インストールしました。 https://www.drush.org/12.0.1/install/ composer require drush/drush vendor/bin/drush pm:uninstall drupal/search_api drupal/facets drupal/jsonapi_search_api drupal/jsonapi_search_api_facets その後、以下のコマンドにより、再度インストールしました。 ...

Disable UI: DrupalをヘッドレスCMSとして使う

Disable UI: DrupalをヘッドレスCMSとして使う

DrupalをヘッドレスCMSとして使う機会があり、UIへのアクセスを管理者等に限定するDisable UIモジュールを試しました。 https://www.drupal.org/project/disable_ui 結果、トップページへのアクセス等は、以下のように表示されました。 一方、有効化したjson:apiなどについては、非ログインユーザもアクセスできました。 /jsonapi/ DrupalをヘッドレスCMSとして使用する際の参考になりましたら幸いです。

DrupalのJSON:APIの使用方法(includeと多言語対応)

DrupalのJSON:APIの使用方法(includeと多言語対応)

概要 DrupalのJSON:APIの使用方法に関する備忘録です。今回は、タクソノミーなどに対するincludeと多言語処理について記載します。 データ 以下のように、positionフィールドにタクソノミー「助教」を付与しています。 /node/5 また、コンテンツの多言語化を有効にしており、以下のように、タイトルとpositionの英語も表示されます。 /en/node/5 JSON:API 上記のコンテンツをコンテンツタイプ「faculty」に作成したので、以下のURLから、データの一覧を取得できます。 /jsonapi/node/faculty/ 以下は、linksフィールドを除く結果を表示しています。field_positionにタクソノミーのIDが含まれていますが、当該タクソノミーのラベル等はふくまれていません。 { "jsonapi": { "version": "1.0", "meta": { "links": { "self": { "href": "http://jsonapi.org/format/1.0/" } } } }, "data": [ { "type": "node--faculty", "id": "586ef1d9-b680-41f9-b54b-7ebcdc9d154f", "attributes": { "drupal_internal__nid": 5, "drupal_internal__vid": 13, "langcode": "ja", "revision_timestamp": "2023-06-08T01:01:43+00:00", "revision_log": null, "status": true, "title": "中村覚", "created": "2023-06-08T00:44:15+00:00", "changed": "2023-06-08T01:01:26+00:00", "promote": true, "sticky": false, "default_langcode": true, "revision_translation_affected": null, "content_translation_source": "und", "content_translation_outdated": false, "path": { "alias": null, "pid": null, "langcode": "ja" }, "body": null }, "relationships": { "node_type": { "data": { "type": "node_type--node_type", "id": "841962f7-91c8-47a1-b335-ea494efe467c", "meta": { "drupal_internal__target_id": "faculty" } } }, "revision_uid": { "data": { "type": "user--user", "id": "0b001e4d-ed29-4a53-960d-9cdcc3d3ad70", "meta": { "drupal_internal__target_id": 1 } } }, "uid": { "data": { "type": "user--user", "id": "0b001e4d-ed29-4a53-960d-9cdcc3d3ad70", "meta": { "drupal_internal__target_id": 1 } } }, "field_position": { "data": { "type": "taxonomy_term--position", "id": "6ce458e8-6d79-4ed1-9653-5ec178568b7a", "meta": { "drupal_internal__target_id": 5 } } } } } ] } includeを使う クエリに、?include=field_positionを追加します。結果、以下のように、includedフィールドが追加され、タクソノミータームのnameフィールドの値も得ることができました。 ...

Drupal Key authを用いたコンテンツの登録と多言語対応

Drupal Key authを用いたコンテンツの登録と多言語対応

概要 以下の記事で、Basic認証を使ったPythonによるコンテンツ登録を行いました。 今回は、以下の記事を参考に、API Key Authenticationを試しました。 https://designkojo.com/post-drupal-using-jsonapi-vuejs-front-end API Key Authentication 以下のモジュールを使用しました。 https://www.drupal.org/project/key_auth ユーザの編集画面に「Key authentication」というタブが表示され、APIキーを生成できました。 APIキーを使用する場合には、以下のようなプログラムで実行することができました。 import requests endpoint = 'http://{ipアドレス or ドメイン名}/jsonapi/node/article' key = '{APIキー}' headers = { 'Accept': 'application/vnd.api+json', 'Content-Type': 'application/vnd.api+json', "api-key": key } payload = { "data": { "type": "node--article", "attributes": { "title": "What's up from Python", "body": { "value": "Be water. My friends.", "format": "plain_text" } } } } r = requests.post(endpoint, headers=headers, json=payload) r.json() 多言語対応における注意点 注意点として、翻訳データの作成はできないようでした。 https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module/translations 作成済みの翻訳データの更新は可能ですが、翻訳データがないノードに対しては、以下のエラーが発生しました。 { "jsonapi": { "version": "1.0", "meta": { "links": { "self": { "href": "http://jsonapi.org/format/1.0/" } } } }, "errors": [ { "title": "Method Not Allowed", "status": "405", "detail": "The requested translation of the resource object does not exist, instead modify one of the translations that do exist: ja." } ] } この点について、既に対応策ができているかもしれません。引き続き調査したいと思います。 ...

DrupalでTypeError: array_keys()...への対処

DrupalでTypeError: array_keys()...への対処

graphqlモジュールで以下のエラーが発生しました。 The website encountered an unexpected error. Please try again later. TypeError: array_keys(): Argument #1 ($array) must be of type array, null given in array_keys() (line 40 of /bitnami/drupal/modules/contrib/graphql/graphql.install). そこで、以下の記事を参考に、ソースコードを修正しました。 https://www.drupal.org/project/google_tag/issues/3319621 具体的には、以下のように書き換えることで、エラーが解消しました。 // $negotiation = $languageTypes->get('negotiation'); $negotiation = $languageTypes->get('negotiation') ?? []; 最新のバージョンでは修正されていると思いますが、同様のエラーでお困りの方の参考になりましたら幸いです。