ユーザ用ツール

サイト用ツール


cms:drupal:upgrade8:references

references

Viewsは、Drupal8からコアに内蔵されているとのことでreferenceもあるらしい。しかし、migradeで移行したあと、コンテンツタイプを確認したら node referenceのフィールドが全部なかった。

viewsはサイト構築の中にあるにはあるが、、

viewsが移行されてない

そもそも、viewsのブロックやらページが移行されてないようである。こんな記載があった。

いいえ、それらを再構築する必要があります。7〜8の間にアップグレードパスはありません。コアメンテナは、8で再構築し、コンテンツを移行するというアプローチを採用しました。アーキテクチャの変更が多すぎます。そのため、コンテンツに関するドキュメントしか表示されません。

4年前の記事であるが、migradeの機能としてはないようであるが、モジュールがあるようである

referenceを機能させる

手動でやるしかないかな、ということで、やってみる。いくつか、かなり長い間(冬休みのほぼ数日)を変えてこの方法で一つクリアできた。

  • Datasheet類は部品種類(例えばMCUやDiodeなどの)を示す「親分類」としての親コンテンツをDatasheet_daibunruiとして持ち、
  • その下に紐づく部品(個別の部品毎)をDatasheet_childとしたコンテンツとして構成していた。
  • Datasheet_childは、1部品1コンテンツになり、node_referenceで親を参照する

D7でのコンテンツフィールドを示す(下段にD8移行後の状態を示している)

Datasheet_daibunruiDatasheet_child
D7もと
D8移行後

代理店やメーカなどの参照先もあるが、ここで一旦無視するとして、参照するためのフィールドを作る。viewsは移行する手段があるようですが、コンテンツのフィールドが移行されてなきゃだめなんで、結局全てのコンテンツを修正する必要があるというわけですかね?

さらにぐぐってみたら、Drupal 8 - Node reference migrate to entity reference typeの中に、こんなことが書いてある(ググ翻訳)

古いCCKパッケージのおよびフィールドタイプのD7バージョンを提供するReferencesモジュールを使用しているようです。node_referenceuser_reference

このモジュールは、drupal7の初期にこれらのフィールドタイプを有効にするためのソリューションでした。しばらくして、エンティティ参照がd7に登場し、任意のエンティティを参照するための汎用フィールドタイプを提供し、それ以来Drupal8コアに含まれています。 問題に対処するには、参照フィールドを適切なフィールドタイプに移行することから始める必要がありますentity_reference。 drupal 8の移行前に作業を完了するのに役立つ、Reference toEntityReferenceフィールド移行と呼ばれるモジュールがあります。

えっ?そうなの!  全然知らんかったんだけど。これは別のページでもう一回やるとして、、、

自分のサイトだったら、100もないけど、会社のイントラネット内のサイトのコンテンツは1000を超えてるからなー、誰がやるんかなぁ、なんて思っていましたが、方法があるようだ!

子コンテンツのフィールドを作る

 

次にフィールドの設定で
 

デフォルト値が選択式(セレクト)になるためには、あとで、フィールドの管理 ではなく、フォームの表示管理 で選べるようになる。

viewを作成

最初、viewばっかりいじって頑張っていたのだが、コンテンツ見たらフィールドがないことがわかったから、あとからフィールドを作ったら、うんとあっさりいった。

フィルタ条件に、「掲載」と「子コンテンツ」要素を入れることと、そのコンテクスチャフィルター(意味わかってないんだけど)の設定をやるってことだ。

cms/drupal/upgrade8/references.txt · 最終更新: 2022/01/03 23:08 by king